使用索引在JavaScript对象上迭代

使用索引在JavaScript对象上迭代,javascript,for-loop,ecmascript-6,Javascript,For Loop,Ecmascript 6,我试图在ES6中循环一个JavaScript对象 for (let [value, index] of object) { do something with rest if (index >= 1) { // do something with first item } } 它工作正常,但当我尝试使用索引获取第一项时,它会在控制台中返回一个错误: Uncaught TypeError: Invalid attempt to destructu

我试图在ES6中循环一个JavaScript对象

 for (let [value, index] of object) {
    do something with rest
    if (index >= 1) {
       // do something with first item
    }
  }
它工作正常,但当我尝试使用索引获取第一项时,它会在控制台中返回一个错误:

Uncaught TypeError: Invalid attempt to destructure non-iterable instance

关于如何使用索引在对象上循环有什么想法吗?谢谢

只需计算索引:

let index = 0;
for (let value of object) {
  //do something with rest
  if (index >= 1) {
    // do something with the third and following items
  }
  index++;
}
或者,如果您真的想使用对象分解(我不知道为什么),它会有点复杂:

let entries = Object.entries(object);

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

但我不知道你为什么不使用简单的forEach

Object.values(obj).forEach((value, index)=> /*...*/);
这只是jonas w解决方案的一个补充

如果需要当前值的键:

const object={a:2,b:4,c:6,d:8};
for(Object.entries(Object.entries(Object))的常量[index、[key、value]]{
log(`${index}:${key}=${value}`);
}
Object.entries(Object.forEach)([key,value],index)=>{
log(`${index}:${key}=${value}`);

});Object.keys()
获取一个属性名数组,然后对其进行迭代,然后会有一个索引,不过这可能没有什么意义。感谢您的深入了解。如果需要获取第一项,我将尝试将对象更改为听起来更符合逻辑的数组。是的,数组更有意义,然后您的
for/of
循环将根据您的需要工作。您的
对象是什么?请发布引发此错误的整个代码(它表明您的
对象
可编辑,但元素不可编辑)。
Object.values(obj).forEach((value, index)=> /*...*/);