如何使用下划线 js 转换此数据?
How can I transform this data using underscore js?
我有一些数据从 REST API 返回给我。我希望它以某种格式用于我的 Angular 2 应用程序。
如何使用underscore js进行如下数据转换?
从 REST 返回的数据 API:
[
{
"ProductVariantID": "133",
"ProductID": "259",
"ProductGender": "Male",
"Size": "17.5",
"Color": "Red",
"MSRP": "0",
"MAP": "0",
"UPC": "99999106"
},
{
"ProductVariantID": "128",
"ProductID": "259",
"ProductGender": "Male",
"Size": "17.5",
"Color": "Blue",
"MSRP": "0",
"MAP": "0",
"UPC": "99999101"
},
{
"ProductVariantID": "130",
"ProductID": "259",
"ProductGender": "Male",
"Size": "19.5",
"Color": "Blue",
"MSRP": "0",
"MAP": "0",
"UPC": "99999103"
},
{
"ProductVariantID": "129",
"ProductID": "259",
"ProductGender": "Male",
"Size": "18.5",
"Color": "Blue",
"MSRP": "0",
"MAP": "0",
"UPC": "99999102"
},
{
"ProductVariantID": "132",
"ProductID": "259",
"ProductGender": "Male",
"Size": "15.5",
"Color": "Red",
"MSRP": "0",
"MAP": "0",
"UPC": "99999105"
},
{
"ProductVariantID": "131",
"ProductID": "259",
"ProductGender": "Male",
"Size": "21.5",
"Color": "Blue",
"MSRP": "0",
"MAP": "0",
"UPC": "99999104"
},
{
"ProductVariantID": "127",
"ProductID": "259",
"ProductGender": "Male",
"Size": "15.5",
"Color": "Blue",
"MSRP": "0",
"MAP": "0",
"UPC": "99999100"
}
]
我想把它改成下面这样。请注意,顶级数组按其对象的 "Color" 属性 字母顺序排序,而变体数组按其对象的 "Size" 属性 数字排序。本质上,我想要一个新的对象数组,按颜色分组并将原始对象包含在 "Variants" 数组 属性.
中
期望的输出:
[
{
"Color": "Blue",
"Variants": [
{
"ProductVariantID": "127",
"ProductID": "259",
"ProductGender": "Male",
"Size": "15.5",
"Color": "Blue",
"MSRP": "0",
"MAP": "0",
"UPC": "99999100"
},
{
"ProductVariantID": "128",
"ProductID": "259",
"ProductGender": "Male",
"Size": "17.5",
"Color": "Blue",
"MSRP": "0",
"MAP": "0",
"UPC": "99999101"
},
{
"ProductVariantID": "129",
"ProductID": "259",
"ProductGender": "Male",
"Size": "18.5",
"Color": "Blue",
"MSRP": "0",
"MAP": "0",
"UPC": "99999102"
},
{
"ProductVariantID": "130",
"ProductID": "259",
"ProductGender": "Male",
"Size": "19.5",
"Color": "Blue",
"MSRP": "0",
"MAP": "0",
"UPC": "99999103"
},
{
"ProductVariantID": "131",
"ProductID": "259",
"ProductGender": "Male",
"Size": "21.5",
"Color": "Blue",
"MSRP": "0",
"MAP": "0",
"UPC": "99999104"
}
],
}
{
"Color": "Red",
"Variants": [
{
"ProductVariantID": "132",
"ProductID": "259",
"ProductGender": "Male",
"Size": "15.5",
"Color": "Red",
"MSRP": "0",
"MAP": "0",
"UPC": "99999101"
},
{
"ProductVariantID": "133",
"ProductID": "259",
"ProductGender": "Male",
"Size": "17.5",
"Color": "Red",
"MSRP": "0",
"MAP": "0",
"UPC": "99999101"
},
],
}
]
您可以在 group by 之后使用 map 来创建所需的输出
var temp1=_.groupBy(result, 'Color');
_.map(temp1,function(item,key){return {'Color':key,'Variants':item}});
我有一些数据从 REST API 返回给我。我希望它以某种格式用于我的 Angular 2 应用程序。
如何使用underscore js进行如下数据转换?
从 REST 返回的数据 API:
[
{
"ProductVariantID": "133",
"ProductID": "259",
"ProductGender": "Male",
"Size": "17.5",
"Color": "Red",
"MSRP": "0",
"MAP": "0",
"UPC": "99999106"
},
{
"ProductVariantID": "128",
"ProductID": "259",
"ProductGender": "Male",
"Size": "17.5",
"Color": "Blue",
"MSRP": "0",
"MAP": "0",
"UPC": "99999101"
},
{
"ProductVariantID": "130",
"ProductID": "259",
"ProductGender": "Male",
"Size": "19.5",
"Color": "Blue",
"MSRP": "0",
"MAP": "0",
"UPC": "99999103"
},
{
"ProductVariantID": "129",
"ProductID": "259",
"ProductGender": "Male",
"Size": "18.5",
"Color": "Blue",
"MSRP": "0",
"MAP": "0",
"UPC": "99999102"
},
{
"ProductVariantID": "132",
"ProductID": "259",
"ProductGender": "Male",
"Size": "15.5",
"Color": "Red",
"MSRP": "0",
"MAP": "0",
"UPC": "99999105"
},
{
"ProductVariantID": "131",
"ProductID": "259",
"ProductGender": "Male",
"Size": "21.5",
"Color": "Blue",
"MSRP": "0",
"MAP": "0",
"UPC": "99999104"
},
{
"ProductVariantID": "127",
"ProductID": "259",
"ProductGender": "Male",
"Size": "15.5",
"Color": "Blue",
"MSRP": "0",
"MAP": "0",
"UPC": "99999100"
}
]
我想把它改成下面这样。请注意,顶级数组按其对象的 "Color" 属性 字母顺序排序,而变体数组按其对象的 "Size" 属性 数字排序。本质上,我想要一个新的对象数组,按颜色分组并将原始对象包含在 "Variants" 数组 属性.
中期望的输出:
[
{
"Color": "Blue",
"Variants": [
{
"ProductVariantID": "127",
"ProductID": "259",
"ProductGender": "Male",
"Size": "15.5",
"Color": "Blue",
"MSRP": "0",
"MAP": "0",
"UPC": "99999100"
},
{
"ProductVariantID": "128",
"ProductID": "259",
"ProductGender": "Male",
"Size": "17.5",
"Color": "Blue",
"MSRP": "0",
"MAP": "0",
"UPC": "99999101"
},
{
"ProductVariantID": "129",
"ProductID": "259",
"ProductGender": "Male",
"Size": "18.5",
"Color": "Blue",
"MSRP": "0",
"MAP": "0",
"UPC": "99999102"
},
{
"ProductVariantID": "130",
"ProductID": "259",
"ProductGender": "Male",
"Size": "19.5",
"Color": "Blue",
"MSRP": "0",
"MAP": "0",
"UPC": "99999103"
},
{
"ProductVariantID": "131",
"ProductID": "259",
"ProductGender": "Male",
"Size": "21.5",
"Color": "Blue",
"MSRP": "0",
"MAP": "0",
"UPC": "99999104"
}
],
}
{
"Color": "Red",
"Variants": [
{
"ProductVariantID": "132",
"ProductID": "259",
"ProductGender": "Male",
"Size": "15.5",
"Color": "Red",
"MSRP": "0",
"MAP": "0",
"UPC": "99999101"
},
{
"ProductVariantID": "133",
"ProductID": "259",
"ProductGender": "Male",
"Size": "17.5",
"Color": "Red",
"MSRP": "0",
"MAP": "0",
"UPC": "99999101"
},
],
}
]
您可以在 group by 之后使用 map 来创建所需的输出
var temp1=_.groupBy(result, 'Color');
_.map(temp1,function(item,key){return {'Color':key,'Variants':item}});