我有一个对象数组。我想重新格式化为新数组,但不知道如何开始。我有 jQuery 和 Underscore 可用。
这是我的原始数组:
var myArray = [
{
"name": "Product",
"value": "Car"
},
{
"name": "Product",
"value": "Boat"
},
{
"name": "Product",
"value": "Truck"
},
{
"name": "Color",
"value": "Blue"
},
{
"name": "Location",
"value": "Store"
}
];
这是我试图使新数组看起来像这样:
var newArray = [
{
"name": "Product",
"value": "Car Boat Truck"
},
{
"name": "Color",
"value": "Blue"
},
{
"name": "Location",
"value": "Store"
}
];
在 newArray 中,产品都在一个对象中。
最佳答案
您可以使用groupBy
方法将所有同名元素放在一起,然后 map
将它们转变成你想要的。和pluck
在这里组合输出数组中的值很有用。
这是快速、简单的解决方案:
var newArray = _.chain(myArray)
.groupBy("name")
.map(function(a) {
return {
"name": a[0].name,
"value": _.pluck(a, "value").join(" ")
};
})
.value();
为了完整起见,这里是非链接版本:
var newArray = _.map(_.groupBy(myArray, "name"), function(a) {
return {
"name": a[0].name,
"value": _.pluck(a, "value").join(" ")
};
});
关于javascript - 将数组格式化为新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22947522/