JSON数组元素作为单个数组
JSON array elements as individual array
假设我有一个类似结构的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]];
}
}
小提琴示例
这种方法的优点是完全不知道输入对象的格式。如果添加新属性,或者格式是动态的,则代码将不需要任何更改。
试试这个
var result = {},
len = data.length, i, prop;
for (i = 0; i < len; i++) {
for (prop in data[i]) {
if (!result[prop]) {
result[prop] = [];
}
result[prop].push(data[i][prop]);
}
}
示例
这个怎么样
var a = [ {"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"} ]
var finalobj = {name : [],custitem_color : [],custitem_ribbon : [],baseprice : [],cost : []};
$.each(a,function(pos,val){
finalobj.name.push(val.name);
finalobj.custitem_color.push(val.custitem_color);
finalobj.custitem_ribbon.push(val.custitem_ribbon);
finalobj.baseprice.push(val.baseprice);
finalobj.cost.push(val.cost);
})
console.log(finalobj);
var final_json = {"name":[],
"custitem_color":[],
"custitem_ribbon":[],
"baseprice":[],
"cost":[]
};
var init_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"
}
] ;
$.each(init_json ,function(pos,val){
final_json.name.push(val.name);
final_json.custitem_color.push(val.custitem_color);
final_json.custitem_ribbon.push(val.custitem_ribbon);
final_json.baseprice.push(val.baseprice);
final_json.cost.push(val.cost);
})
相关文章:
- 在 laravel 4 上使用循环将数据数组存储到单个数组中
- 使用 lodash 是将数据从数组映射到单个数组的好方法
- 如何将链接附加到单个数组项
- 将培根流中的所有值合并到单个数组中
- 下划线模板,将列表添加到单个数组中
- 使用 JavaScript 将多个对象结果集的数组合并到单个数组中
- 如何旋转Javascript中表示为单个数组的4x8网格
- AngularJs过滤到单个数组元素并输出一个属性
- 将单个数组读取到存储中
- 根据id表将单个数组结果发送到打印机
- 将字符串收集到forEach内部的单个数组中
- 跟踪回调并将数据作为单个数组发送出去
- 使用lodash将重复对象合并到单个数组中
- 二维数组中单个数组的和
- 将多维数组转换为单个数组(Javascript)
- 从多个父元素中检索属性并将其存储到单个数组中
- 来自单个数组的目标对象值
- 通过单个数组递归记录javascript中所有可能的排列
- 使用javascript将单个数组转换为多维数组
- Javascript多维嵌套数组,在单个数组中排序