javascript - JSON 数组元素作为单独的数组

标签 javascript jquery arrays json

假设我有一个如下结构的 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]];
    }
}

Example fiddle

此方法的优点是完全不知道输入对象的格式。如果添加新属性,或者格式是动态的,则代码不需要任何更改。

关于javascript - JSON 数组元素作为单独的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28452299/

相关文章:

javascript - 如何在 JQuery 中解析集合

javascript - 获取contenteditable span的值

javascript - 可将列表项拖动到菜单中的标题

c++ - 通过引用传递给模板函数

javascript - 如何使用foreach生成的输入进行计算?

javascript - Breezejs 支持 IndexedDB 吗?

php - 如何使用 AJAX 将数据发送到我的 PHP 脚本?

javascript - 使用 JSDoc 记录 jQuery

arrays - 具有最小可能交换的相对排序

c++ - 使用指针用随机数填充数组