Javascript:ForEach over sub objects

时间:2016-02-11 22:08:21

标签: javascript json loops foreach undefined

我正在使用forEach迭代javascript中的对象。它按预期工作,直到我尝试迭代子字段。我如何使用forEach迭代字段和子字段?下面是一段代码以及预期和实际结果。任何帮助将不胜感激:)

  const person = {
    first: 'Joe',
    last: 'Dirt',
    previous: {
      last: 'Sand',
    }
  };

  const attributes = [
      'first',
      'last',
      'previous.last' <-- Undefined. How do I access this?

    ];

  attributes.forEach(element => {
    console.log(person[element]);
  });

预期:

-Joe

-Dirt

-Sand

结果:

-Joe

-Dirt

-undefined

1 个答案:

答案 0 :(得分:1)

您可以借助临时对象迭代splitted属性。

&#13;
&#13;
var person = { first: 'Joe', last: 'Dirt', previous: { last: 'Sand', } },
    attributes = ['first', 'last', 'previous.last'];

attributes.forEach(function (element) {
    var obj = person;
    element.split('.').forEach(function (a) {
        obj = obj[a];
    });
    document.write(obj + '<br>');
});
&#13;
&#13;
&#13;