首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用索引遍历JavaScript对象

使用索引遍历JavaScript对象
EN

Stack Overflow用户
提问于 2017-07-22 14:47:47
回答 2查看 37.6K关注 0票数 30

我尝试在ES6中遍历一个JavaScript对象。

代码语言:javascript
复制
 for (let [value, index] of object) {
    do something with rest
    if (index >= 1) {
       // do something with first item
    }
  }

它工作得很好,尽管当我尝试使用index来获取第一个项目时,它在控制台中返回一个错误:

代码语言:javascript
复制
Uncaught TypeError: Invalid attempt to destructure non-iterable instance

关于如何使用索引遍历对象有什么想法吗?谢谢

EN

回答 2

Stack Overflow用户

发布于 2017-07-22 20:24:02

这只是对jonas w的解决方案的补充。

如果您需要当前值的key:

代码语言:javascript
复制
const object = {a:2, b:4, c:6, d:8};

for (const [index, [key, value]] of Object.entries(Object.entries(object))) {
  console.log(`${index}: ${key} = ${value}`);
}

Object.entries(object).forEach(([key, value], index) => {
  console.log(`${index}: ${key} = ${value}`);
});

当然,您可以随时省略key

代码语言:javascript
复制
const object = {a:2, b:4, c:6, d:8};

for (const [index, [, value]] of Object.entries(Object.entries(object))) {
  console.log(`${index}: ${value}`);
}

Object.entries(object).forEach(([, value], index) => {
  console.log(`${index}: ${value}`);
});

票数 35
EN

Stack Overflow用户

发布于 2017-07-22 14:51:02

只需计算索引:

代码语言:javascript
复制
let index = 0;
for (let value of object) {
  //do something with rest
  if (index >= 1) {
    // do something with the third and following items
  }
  index++;
}

或者,如果你真的想使用对象解构(我不知道为什么),那就有点复杂了:

代码语言:javascript
复制
let entries = Object.entries(object);

for(let [index, [key, value]] of entries.entries()){
 //...
}

或者:

代码语言:javascript
复制
for(let [index,value] of Object.values(object).entries()){
  //...
}

但是我不明白为什么你不使用一个简单的forEach?

代码语言:javascript
复制
Object.values(obj).forEach((value, index)=> /*...*/);
票数 20
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45251605

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档