我有一些从REST API返回给我的数据。对于我的Angular 2应用程序,我希望它采用某种格式。
如何使用下划线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”属性上按字母顺序排序,Variants数组按其对象的“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"
},
],
}
]
答案 0 :(得分:1)
您可以使用分组后的地图来创建所需的输出
var temp1=_.groupBy(result, 'Color');
_.map(temp1,function(item,key){return {'Color':key,'Variants':item}});