我有一些从 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”属性按字母顺序排序,而 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"
},
],
}
]
最佳答案
您可以在分组之后使用映射来创建所需的输出
var temp1=_.groupBy(result, 'Color');
_.map(temp1,function(item,key){return {'Color':key,'Variants':item}});
关于javascript - 如何使用下划线js转换这些数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37290775/