[英]How to operate object structure in JavaScript
var obj = {
skill:{
eat:true,
walk:true
},
address:{
home:"where",
company:"where"
}
};
我可以通過以下方式獲得一件:
tester.activate(obj[skill]);
如何獲得所有物品?
您可以在中使用for ... in
遍歷對象的屬性:
for (var k in obj) {
if (obj.hasOwnProperty(k)) {
var value = obj[k];
alert("property name is " + k + " value is " + value);
}
}
那里有對“ hasOwnProperty”函數的調用,以防止該代碼重復訪問實際上從Object原型繼承的“ obj”上存在的屬性。 有時您可能希望將它們包括在內,但是在這種情況下,將它們過濾掉是安全的(我認為)。 (@sdleihssirhc指出,如果您確實要確定,可以使用Object.prototype.hasOwnProperty.call(obj, k)
)
如果您需要技能,可以得到
obj.skill
如果您需要地址,您可以得到
obj.address
或者,如果您想獲取單個數據:
var eat = obj.skill.eat;
var company = obj.address.company;
如果需要所有項目,則可以遍歷結構並將所有項目推入數組
function pushObjToArray(obj, array) {
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
if (obj[key] instanceof Array) {
pushObjToArray(obj[key], array);
} else if (obj[key] instanceof Object) {
pushObjToArray(obj[key], array);
} else {
array.push(obj[key]);
}
}
}
return array;
}
var array = [];
pushObjToArray(array, obj);
第二個想法就是銷毀密鑰並將所有數據推入數組是毫無用處的。
你實際想做什么?
您可能正在尋找類似_.flatten
東西
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.