[英]How do I iterate through nested properties of an json object and create a new array list?
我有一个json对象“ items”,并且我试图将所有“ values”放入一个单独的字符串中:
"items":[
{
"id":0,
"categoryId":0,
"label":"TOTAL EDUCATION",
"total":739599,
"values":[
451383,
288216
],
"items":[ ],
"metadataIds":"20006",
"collapsed":true
},
{
"id":0,
"categoryId":0,
"label":"TOTAL HIGHWAYS",
"total":63678,
"values":[
32672,
31006
],
"items":[ ],
"metadataIds":"20022",
"collapsed":true
},
for (var i = 0; i < obj.items.length; i++) {
var cost = obj.items[i].values;
}
我正在尝试从值中实现的输出:
[451383,288216],[32672,31006]等
此处的示例: https : //jsfiddle.net/zidski/6mg8fszj/
目前,我只能输出“值”集中的1个。
目前,我只能输出“值”集中的1个。
嗯,是; 您每次都覆盖它。
您已经说过要“一个字符串”,并且显示的输出中包含[
和]
。 有趣的是,当您在迭代时不使用JSON时,JSON可以在生成该字符串中发挥作用:
var str = obj.items.map(function(item) {
return JSON.stringify(item.values);
}).join(",");
Array#map
遍历items
建立一个新的阵列出了什么事情,我们返回从我们的回调每个项目; 在上面的代码中,我们将返回与每个项目的values
数组等效的JSON字符串。 然后,我们join
所得阵列与逗号之间,以获得最终的字符串。
例:
var obj = { "items": [{ "id": 0, "categoryId": 0, "label": "TOTAL EDUCATION", "total": 739599, "values": [ 451383, 288216 ], "items": [], "metadataIds": "20006", "collapsed": true }, { "id": 0, "categoryId": 0, "label": "TOTAL HIGHWAYS", "total": 63678, "values": [ 32672, 31006 ], "items": [], "metadataIds": "20022", "collapsed": true }] }; var str = obj.items.map(function(item) { return JSON.stringify(item.values); }).join(","); document.body.innerHTML = "<pre>" + str + "</pre>";
如果不真正想要的字符串,而是想要一个数组的数组,这是一个有点简单:
var arrayOfArrays = obj.items.map(function(item) {
return item.values;
});
var obj = { "items": [{ "id": 0, "categoryId": 0, "label": "TOTAL EDUCATION", "total": 739599, "values": [ 451383, 288216 ], "items": [], "metadataIds": "20006", "collapsed": true }, { "id": 0, "categoryId": 0, "label": "TOTAL HIGHWAYS", "total": 63678, "values": [ 32672, 31006 ], "items": [], "metadataIds": "20022", "collapsed": true }] }; var arrayOfArrays = obj.items.map(function(item) { return item.values; }); // Just using JSON so we have text to show as a result document.body.innerHTML = "<pre>" + JSON.stringify(arrayOfArrays, null, 2) + "</pre>";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.