如何循环遍历包含100个具有不同属性的对象的数组,并从每个对象中检索1个属性值

How to loop through an array of 100 objects with different properties and retrieve 1 property value from each?

本文关键字:属性 对象 数组 1个 检索 循环 何循环 遍历 包含 100个      更新时间:2023-09-26

我有一个包含100个对象的数组,每个对象具有不同的属性。我试图通过数组做一个for循环,从每个对象获得一个特定的属性,并把它推到一个新的数组。我试过:

 for (var item in response.data) {
                main.allUsers.push(item);
            }

当我console.log(main.allUsers);我得到一个数组看起来像("0"、"1"、"2"、"3"、"4"……] .

当遍历对象属性时,for...in循环的左侧是一个字符串,表示当前对象的属性名称。所以,你必须使用符号object['property']来获得那个属性的对应值。您应该使用:

main.allUsers.push(response.data[item]);

虽然,看起来你的response.data是一个数组,而不是一个对象,所以,你不应该使用for...in,因为它被设计为通过对象属性循环。

当循环通过数组时,您应该使用常规的for循环,或者您可以使用Array.prototype.forEach循环,它将迭代类似于您尝试使用for...in的方式。当ES6被完全支持时,你将能够使用for...of循环,这与你正在尝试的类似:

for (var i = 0; i < response.data.length; i++) {
  var item = response.data[i];
  main.allUsers.push(item);
}
// or
response.data.forEach(function(item, i) {
  main.allUsers.push(item);
}
// and in the future (it already works in Firefox, if you wanna give a try)
for (var item of response.data) {
  main.allUsers.push(item);
}

回答你的评论,你可以使用:

response.data.forEach(function(item) {
  main.allUsers.push(item.DisplayName);
});
// or
for (var i = 0; i < response.data.length; i++) {
  main.allUsers.push(response.data[i].DisplayName);
}
// or if you don't have any items inside main.allUsers yet
main.allUsers = response.data.map(function(item) { return item.DisplayName; });

您还可以使用javascript执行以下操作。Jsfiddle

    var arrayOfObjects = [
        {name: "myName1",
         age: 12
        },
        {surname: "mySurname2",
         age: 26
        }
        //98 more...
    ];
    var myData = [];
    for(var i = 0; i < arrayOfObjects.length; i++){ //iterate array of objects
        for(var key in arrayOfObjects[i]){ //iterate each object key
            if(arrayOfObjects[i].hasOwnProperty(key) && key == "age"){ 
                //make sure its the key you want
                myData.push(arrayOfObjects[i].age);
            }
        }
    }
    console.log(myData);

要获取数组中的每个对象,必须使用

for(var i=0; i < response.data.length; i++){
    var obj = response.data[i];
}

现在要获取对象的每个属性,

for(var i=0; i < response.data.length; i++){
    var obj = response.data[i];
    for (property in obj){
       console.log(property);
    }
}

不要对数组https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Statements/for...in#Array_iteration_and_for...in使用for..in。使用forEach,或标准for,或map。如:

var _len = response.data.length;
for (var i = 0; i < _len; i++) {
  main.allUsers.push(response.data[i]);
}