簡體   English   中英

如何從javascript中json字符串中的對象列表中獲取鍵

[英]how to get keys from object list in json string in javascript

[null, {
  "display_with": "7",
  "id": "1",
  "image": "/images/salt_sugar.png",
  "name": "Salt and Sugar",
  "subcategories": {
    "1": true,
    "6": true,
    "7": true
  }
}, {
  "display_with": "6",
  "id": "2",
  "image": "/images/tea_and_coffee.png",
  "name": "Tea and Coffee",
  "subcategories": {
    "8": true,
    "9": true,
    "124": true
  }
}]

在上面的字符串中,我想分別從第二個和第三個記錄中獲取1、6、7和8、9、124。

這是我的邏輯。

recvCategories = JSON STRING

for (var j=0; j<recvCategories.length; ++j){
    var category =  recvCategories[j];

    if (category != undefined){
        var subcategories = [];
        int size = Object.keys(category.subcategories).length;

        for (var property in object) {
            if (object.hasOwnProperty(property)) {
                // do stuff
            }
        }
    }
}

如何在//做東西中打印1、6、7和8、9、124

假設您的數據被命名為data則應該這樣做。

var keys = [];
data.forEach(d => {
    if (d.subcategories)
        for (var key in d.subcategories)
            keys.push(key);
})

看起來很簡單,但是通過使用for(var x in y)實際上會迭代對象的屬性並返回propertyNames。

因此,在示例中,我們在數組中調用.forEach()方法,然后迭代子類別的每個鍵, pushpush入新數組。

就像是,

for( i in aList) { 
    console.log(keys(aList[i] && aList[i].subcategories)) 
}
// []
// [1, 6, 7]
// [8, 9, 124]

您的代碼中很少有指針:

  • 這種情況: if (category != undefined)將不驗證null並且代碼將拋出object.something
  • Object.keys(category.subcategories).length; 如果對象中沒有屬性subcategories ,則會中斷。 您可以嘗試這樣的事情(Object.keys(category.subcategories) || []).length
  • 同樣,如果您創建自己的自定義對象,則使用object.hasOwnProperty是有意義的,但是如果您正在讀取JSON形式,則可以依賴Object.keys

您也可以嘗試如下操作:

 function getSubCategoriesKeys(d){ return d.reduce(function(p,c){ if(!isEmpty(c) && typeof(c) === "object" && c.hasOwnProperty("subcategories")){ p = p.concat(Object.keys(c.subcategories)) } return p; }, []) } function isEmpty(o){ return o === undefined || o === null || o.toString().trim().length === 0 } var data = [null, { "display_with": "7", "id": "1", "image": "/images/salt_sugar.png", "name": "Salt and Sugar", "subcategories": { "1": true, "6": true, "7": true } }, { "display_with": "6", "id": "2", "image": "/images/tea_and_coffee.png", "name": "Tea and Coffee", "subcategories": { "8": true, "9": true, "124": true } }] var keys = getSubCategoriesKeys(data); console.log(keys) 

參考

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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