Iterate over JavaScript object with index

后端 未结 2 619
小鲜肉
小鲜肉 2020-12-15 20:49

I am trying to loop over a JavaScript object in ES6.

 for (let [value, index] of object) {
    do something with rest
    if (index >= 1) {
       // do s         


        
相关标签:
2条回答
  • 2020-12-15 21:16

    Simply count the index:

    let index = 0;
    for (let value of object) {
      //do something with rest
      if (index >= 1) {
        // do something with the third and following items
      }
      index++;
    }
    

    Or if you really want to use object destructuring ( i dont know why ) its a bit more complicated:

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

    or:

    for(let [index,value] of Object.values(object).entries()){
      //...
    }
    

    But i dont know why youre not using a simple forEach?:

    Object.values(obj).forEach((value, index)=> /*...*/);
    
    0 讨论(0)
  • 2020-12-15 21:21

    This is just meant to be an addition to jonas w's solutions.

    If you need the key of the current value:

    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}`);
    });

    Of course, you can leave out the key at any time:

    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}`);
    });

    0 讨论(0)
提交回复
热议问题