javascript - 通过对象 JavaScript 迭代

标签 javascript object iteration for-in-loop

大家好,我有一个关于对象迭代的简短问题

这是我的代码 [ https://jsfiddle.net/Ar2zee/9g91ouq6/]

var names = {
  first: 'Sasha',
  second: 'Andrey',
  third: 'Pasha',

  lastnames: {
    firstL: 'Oga',
    secondL: 'opa',
    thirdL: 'uka'
  },
}
for (var keys in names) {
  for (var newKeys in names.lastnames) {
    console.log(names.lastnames[newKeys]);
  }
}

我的目标是记录一次所有的lastNAmes oga, opa, uka,现在我的结果是每个姓氏的 4 次,你能解释一下为什么吗现在是 4 次以及如何每次制作一次

谢谢

最佳答案

您正在使用两个循环。外部循环迭代所有 names 对象键,它们是 first、second、third 和 lastnames。当内部循环遍历 names.lastnames 时,它们中的每一个都将记录在外部循环的每次迭代中。要做你想做的,只需删除外循环:

for( var newKeys in names.lastnames){
    console.log(names.lastnames[newKeys]);
}

如果您在实际代码中使用它,请确保在使用 for in 循环时检查 hasOwnProperty:

for( var newKeys in names.lastnames){
    if (names.lastnames.hasOwnProperty(newKeys)) console.log(names.lastnames[newKeys]);
}

旁注:

如果你只想获取names.lastnames中的所有值,你也可以使用Object.values():

var names = {
  first: 'Sasha',
  second: 'Andrey',
  third: 'Pasha',

  lastnames: {
    firstL: 'Oga',
    secondL: 'opa',
    thirdL: 'uka'
  }
};

console.log(Object.values(names.lastnames));

关于javascript - 通过对象 JavaScript 迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45066105/

相关文章:

javascript - 如何减小 FontAwesome 5.3.1 的大小

javascript - d3 路径 d = MNaN,NaNLNaN,NaN

c# - 如何遍历正在修改的列表?

ruby - 这个 Ruby Array 映射代码中是否有隐式关键字?

javascript - 从评估方法调用时不会出现消息

javascript - 如何在 JavaScript 中同时检查最小值和最大值?

javascript - 我怎样才能通过这个对象 'v-repeat'?

JavaScript:JavaScript 中是否有任何 "python' s Generator"等价物?

javascript - 为什么在我的图像中移动时需要单击两次才能转到适当的方向?

c++ - 如何访问在当前函数范围之外创建的动态创建的对象?