簡體   English   中英

如何遍歷json對象的嵌套屬性並創建新的數組列表?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM