如何从另一个对象内的对象访问多级键/值

时间:2014-01-07 20:17:37

标签: javascript object key

例如,如果我有以下两个对象

var person = {};

person.name = 'Austin';

person.personality = 'Awsome';

var job = {};

job.title = 'space cowboy';

job.pay = 10,000;

person.job = job;

我希望以编程方式列出for循环中的每个键和值par我有以下

for(var key in person){
console.log(key)
console.log(person.key)
}

如果密钥在没有硬编码if person.key == job的情况下到达作业,我将如何在此循环中检测到。另外,我如何列出这个for循环中的所有作业键?

3 个答案:

答案 0 :(得分:1)

function trace(ob){
    for (var item in ob){
        if (typeof ob[item] == 'object') trace(ob[item]);

        console.log("key", item);
        console.log("value", ob[item]);
    }
}

答案 1 :(得分:1)

显然你可以对格式化做很多事情,但这是一个递归遍历对象的简单例子。也许它会帮助告诉你你需要做什么:

function iterate(object) {
  for(var key in object) {
    if (object[key] instanceof Object) {
      iterate(object[key]);
    }
    else {
      console.log(key + ": " + object[key]);
    }
  }
}

以下是一个示例,如果有帮助:http://jsbin.com/AmUkIPO/2/

答案 2 :(得分:0)

你可以改为:

我将如何列出所有工作键

var keys = Object.keys(person.job); // get the all the properties keys as array.

keys.map(function(prop, index){
    //prop is a propery 
    // index: the index position in the array
     // prop === "property named"
});

如何获取值并进行比较:

for (prop in person) {
   if (person[prop] === someValue){
      ..
   }
 }

* someValue:表示您想要搜索其他内容而不仅仅是获取值类型的值。

所有在一起:

for (prop in person) {
       if (person[prop] === someValue){
         var keys = Object.keys(person[prop]); // get the all the properties keys as array.
       }
     }