假设我有一个如下结构的 JSON
[{
"name": "name1",
"custitem_color": "3",
"custitem_ribbon": "1",
"baseprice": "10.00",
"cost": "12.00"
}, {
"name": "name2",
"custitem_color": "4",
"custitem_ribbon": "2",
"baseprice": "20.00",
"cost": "15.00"
}, {
"name": "name3",
"custitem_color": "6",
"custitem_ribbon": "3",
"baseprice": "30.00",
"cost": "22.00"
}, {
"name": "name4",
"custitem_color": "8",
"custitem_ribbon": "4",
"baseprice": "40.00",
"cost": "18.00"
}]
我想生成如下输出
"name": ["name1","name2","name3"],
"custitem_color":["3","4","6","8"]
我搜索了SO,但没有找到这种类型的匹配项。我很想知道是否有任何库或解决方法可以将所有键的值作为单独的数组获取,就像我上面提到的那样。任何建议或指出任何资源将不胜感激。
最佳答案
您可以通过两个循环来完成此操作。一个循环遍历数组中的每个对象,另一个循环遍历每个单独对象的属性。从那里您可以构建一个包含分组值的新对象。试试这个:
var output = {};
for (var i = 0; i < data.length; i++) {
for (var item in data[i]) {
output[item] ? output[item].push(data[i][item]) : output[item] = [data[i][item]];
}
}
此方法的优点是完全不知道输入对象的格式。如果添加新属性,或者格式是动态的,则代码不需要任何更改。
关于javascript - JSON 数组元素作为单独的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28452299/