簡體   English   中英

如何在JavaScript中操作對象結構

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

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