【问题标题】:How do I loop through object properties minus the last value pair in javascript?如何循环遍历对象属性减去javascript中的最后一个值对?
【发布时间】:2019-02-12 00:06:35
【问题描述】:

我正在尝试遍历 node.js javascript 中的对象。我有下面的对象:

var obj = {
  a: "foo",
  b: "bar",
  c: "foobar",
  d: "something1",
  e: "something2",
  f: "something3"
};    

我想遍历所有键,除了最后一个值对 f:"something3" with javascript。

我尝试了类似的方法,但没有成功

 const keys = Object.keys(this.obj)
    for (const key of keys.length-1) {
      console.log(key)
    }

我收到以下错误消息The error just says (keys.length-1) is not iterable

【问题讨论】:

  • for of 不是这样工作的。阅读documentation 可能会有所帮助,并注意您的尝试引发的错误
  • 错误只是说 (keys.length-1) is not iterable
  • 最好在循环中跳过它们......
  • 正确,因为它不是 keys 数组。你显示的和for(const key of 6)的一样

标签: javascript loops object


【解决方案1】:

所以正如 charlietfl 所说,原因是 for(const key of keys.length - 1) 就像写 for(const key of 5),这不是 for of 循环的工作方式。

我建议做的是:

var obj = {
    a: "foo",
    b: "bar",
    c: "foobar",
    d: "something1",
    e: "something2",
    f: "something3"
}; 

const keys = Object.keys(obj)
for (var i = 0; i < keys.length - 1; i++) {
    console.log(obj[keys[i]])
}

所以我们在这里做的是正常的for (var i = 0; i &lt; length - 1; i++)

这里我们的长度是keys.length - 1,也就是5,所以我们会像你想要的那样跳过最后一个。

然后记录 obj 键值console.log(obj[keys[i])

希望这会有所帮助,我还制作了一个 sn-p,以便您可以看到它的实际效果。

var obj = {
  a: "foo",
  b: "bar",
  c: "foobar",
  d: "something1",
  e: "something2",
  f: "something3"
}; 

const keys = Object.keys(obj)
for (var i = 0; i < keys.length - 1; i++) {
   console.log(obj[keys[i]])
}

【讨论】:

  • @Jin 如果我的回答解决了你的问题,欢迎标记。
  • Boren Pedersen,我标记了你的答案,如果可以的话请点赞我的帖子
猜你喜欢
  • 1970-01-01
  • 2021-11-20
  • 1970-01-01
  • 1970-01-01
  • 2014-12-19
  • 1970-01-01
  • 2014-01-26
  • 2014-08-09
  • 1970-01-01
相关资源
最近更新 更多