【问题标题】:how to access a multilevel key/value from an object within another object如何从另一个对象中的对象访问多级键/值
【发布时间】:2014-01-07 20:17:37
【问题描述】:

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

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 循环中的所有作业键?

【问题讨论】:

  • 所以你只是想打印一个 K->V 对的递归列表?
  • 这个简单的例子。我无法弄清楚如何设置此 for 循环的第二级。
  • 要放入标志,您将需要更多代码行..... if 语句或某种 (A==B)?C:D 语句

标签: javascript object key


【解决方案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]);
    }
}

【讨论】:

  • 这就是你的想法吗?
  • 您对延迟回复感到抱歉。关于出于某种原因的递归概念。
【解决方案2】:

您显然可以对格式做很多事情,但这里有一个递归遍历对象的简单示例。也许它会帮助你展示你需要做什么:

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/

【讨论】:

    【解决方案3】:

    你可以这样做:

    我如何列出所有作业键

    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.
           }
         }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-05
      • 2011-04-18
      • 2013-05-02
      • 2023-02-21
      • 2016-11-12
      • 1970-01-01
      相关资源
      最近更新 更多