我在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

但是如何对对象进行处理呢?


当前回答

->如果我们遍历一个JavaScript对象使用并找到数组的键 对象

Object.keys(Array).forEach(key => {

 console.log('key',key)

})

其他回答

const o = {
  name: "Max",
  location: "London"
};

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

试着在网上

唯一可靠的方法是将对象数据保存到2个数组中,一个是键数组,另一个是数据数组:

var keys = [];
var data = [];
for (var key in obj) {
    if (obj.hasOwnProperty(key)) {
        keys.push(key);
        data.push(obj[key]); // Not necessary, but cleaner, in my opinion. See the example below.
    }
}

然后你可以迭代数组,就像你通常会:

for(var i = 0; i < 100; i++){
    console.log(keys[i], data[i]);
    //or
    console.log(keys[i], obj[keys[i]]); // harder to read, I think.
}
for(var i = 100; i < 300; i++){
    console.log(keys[i], data[i]);
}

我没有使用Object.keys(obj),因为那是IE 9+。

是的。可以使用for loop循环遍历对象。这里有一个例子

var myObj = abc:’ABC’, gac:’BCA’, zzz:’ZZZ’, xxx:’XXX’, ccc:’CCC’, ) var k =目标。群岛(myObj); for (var i = 0;i < k.length;i + +) ( 控制台日志(k[i] +:“+ myObj[k[i]]; )

注意:上面提到的例子只适用于IE9+。看到Objec。键浏览器支持在这里。

对于对象迭代,我们通常使用For ..in循环。该结构将循环遍历所有可枚举属性,包括通过原型继承继承的属性。例如:

让obj = { prop1:(1), prop2: ' } 对于(let the in obj) { console.log (el); console.log (obj [ol]); }

然而,for. in将遍历所有可枚举元素,这将不能将迭代分割成块。为此,我们可以使用内置的object .keys()函数来检索数组中对象的所有键。然后,我们可以将迭代分解为多个for循环,并使用keys数组访问属性。例如:

让obj = { prop1: ' 1 ', prop2: ' 2 ', prop3:“3”, prop4:“4”, }; const keys = Object.keys(obj); console.log(键); 对于(设I = 0;I < 2;我+ +){ console.log (obj[键[我]]); } For(令I = 2;I < 4;我+ +){ console.log (obj[键[我]]); }

下面是另一个针对现代浏览器的迭代解决方案:

Object.keys(obj)
  .filter((k, i) => i >= 100 && i < 300)
  .forEach(k => console.log(obj[k]));

或不带过滤功能:

Object.keys(obj).forEach((k, i) => {
    if (i >= 100 && i < 300) {
        console.log(obj[k]);
    }
});

但是你必须考虑到JavaScript对象中的属性是没有排序的,也就是说没有顺序。