我有一个json对象' items'我试图获得所有的价值观#39;分成一个单独的字符串:
"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/
目前我只能输出其中一个&#39;值&#39;集。
答案 0 :(得分:1)
目前我只能输出其中一个&#39;值&#39;集。
嗯,是的;你每次都要覆盖它。
你说你想要&#34;一根弦,&#34;您显示的输出中包含[
和]
。有趣的是,当你在迭代时没有处理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>";
&#13;
如果你不实际上想要一个字符串,而是想要一个数组数组,那就更简单了:
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>";
&#13;