小编典典

如何遍历 JavaScript 对象?

all

我在 JavaScript 中有一个对象:

{
    abc: '...',
    bca: '...',
    zzz: '...',
    xxx: '...',
    ccc: '...',
    // ...
}

我想使用for循环来获取它的属性。而且我想分部分迭代它(不是一次所有对象属性)。

使用简单的数组,我可以使用标准for循环来完成:

for (i = 0; i < 100; i++) { ... } // first part
for (i = 100; i < 300; i++) { ... } // second
for (i = 300; i < arr.length; i++) { ... } // last

但是如何处理对象呢?


阅读 111

收藏
2022-03-09

共1个答案

小编典典

对于大多数对象,请使用for .. in

for (let key in yourobject) {
  console.log(key, yourobject[key]);
}

使用 ES6,如果您同时需要键和值,请执行

for (let [key, value] of Object.entries(yourobject)) {
    console.log(key, value);
}

要避免记录继承的属性,请检查hasOwnProperty

for (let key in yourobject) {
   if (yourobject.hasOwnProperty(key)) {
      console.log(key, yourobject[key]);
   }
}

hasOwnProperty 如果您使用的是简单对象(例如您自己制作的对象),则无需检查何时对键进行迭代{}

这个 MDN 文档更一般地解释了如何处理对象及其属性。

如果你想“分块”做,最好是提取数组中的键。由于无法保证订单,因此这是正确的方法。在现代浏览器中,您可以使用

let keys = Object.keys(yourobject);

为了更加兼容,你最好这样做:

 let keys = [];
 for (let key in yourobject) {      
     if (yourobject.hasOwnProperty(key)) keys.push(key);
 }

然后你可以通过 index: 迭代你的属性yourobject[keys[i]]

for (let i=300; i < keys.length && i < 600; i++) { 
   console.log(keys[i], yourobject[keys[i]]);
}
2022-03-09