我有一个 json 对象“items”,我试图将所有“值”放入一个单独的字符串中:
"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 个。
最佳答案
Currently I can only output 1 of the 'values' set.
嗯,是的;你每次都会覆盖它。
您说过您想要“一个字符串”,并且您显示的输出中包含 [
和 ]
。有趣的是,虽然您在迭代时不处理 JSON,但 JSON 可以在生成该字符串中发挥作用:
var str = obj.items.map(function(item) {
return JSON.stringify(item.values);
}).join(",");
Array#map
循环遍历 items
,根据我们从回调中为每个项目返回的内容构建一个新数组;在上面,我们返回每个项目的 values
数组的 JSON 字符串。然后我们用逗号连接
结果数组来得到最终的字符串。
示例:
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>";
关于javascript - 如何迭代 json 对象的嵌套属性并创建新的数组列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36716180/