![](/img/trans.png)
[英]How to Get JSON data keys and inner keys to from new object in Javascript
[英]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()
方法,然后迭代子類別的每個鍵, push
其push
入新數組。
就像是,
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.