如何遍历包含对象的数组并访问它们的属性

我想遍历数组中包含的对象,并更改每个对象的属性。 如果我这样做:

for (var j = 0; j < myArray.length; j++){ console.log(myArray[j]); } 

控制台应该调出数组中的每个对象,对吧? 但实际上它只显示第一个对象。 如果我在控制台之外logging数组,那么所有对象都会出现,所以肯定会有更多内容。

无论如何,这是下一个问题。 如何使用循环访问数组中的Object1.x?

 for (var j = 0; j < myArray.length; j++){ console.log(myArray[jx]); } 

这返回“未定义”。 循环之外的控制台日志告诉我,对象都具有“x”的值。 我如何在循环中访问这些属性?

我被推荐到其他地方使用单独的数组为每个属性,但我想确保我已经用尽了这条道路。

谢谢!

使用forEach其内置的数组函数

 yourArray.forEach( function (arrayItem) { var x = arrayItem.prop1 + 2; alert(x); }); 
 for (var j = 0; j < myArray.length; j++){ console.log(myArray[j].x); } 

在ECMAScript 2015中又名ES6,你可以使用for..of循环遍历一个对象数组。

 for (let item of items) { console.log(item); // Will display contents of the object inside the array } 

在发布这个答案的时候,对于Internet Explorer来说支持是不存在的,但是通过使用像Traceur或者Babel这样的转译器,你可以使用像这样的新的Javascript特性,而不必担心浏览器支持什么。

这里是一个关于如何做到这一点的例子:)

 var students = [ { name : "Mike", track: "track-a", achievements: 23, points : 400, }, { name : "james", track: "track-a", achievements: 2, points : 21, }, ] students.forEach(myFunction); function myFunction (item, index) { for( var key in item ) { console.log(item[key]) } } 

myArray[jx]在逻辑上不正确。

使用(myArray[j].x); 代替

 for (var j = 0; j < myArray.length; j++){ console.log(myArray[j].x); } 

通过一组对象循环是一个非常基本的function。 这对我有用。

 var person = []; person[0] = { firstName : "John", lastName : "Doe", age : 60 }; var i, item; for (i = 0; i < person.length; i++) { for (item in person[i]) { document.write(item + ": " + person[i][item] + "<br>"); } } 

自ES5 +以来,使用forEach方法非常简单。 您可以直接更改数组中每个对象的每个属性。

 myArray.forEach(function (arrayElem){ arrayElem = newPropertyValue; }); 

如果你想访问每个对象的特定属性:

 myArray.forEach(function (arrayElem){ arrayElem.nameOfYourProperty = newPropertyValue; }); 

这是迭代对象数组的另一种方法(您需要在文档中包含jQuery库)。

 $.each(array, function(element) { // do some operations with each element... }); 

这将工作。 循环彻底的数组(yourArray)。 然后循环每个对象(eachObj)的直接属性。

 yourArray.forEach( function (eachObj){ for (var key in eachObj) { if (eachObj.hasOwnProperty(key)){ console.log(key,eachObj[key]); } } }); 

数组对象迭代,使用jQuery,(使用第二个参数来打印string)。

 $.each(array, function(index, item) { console.log(index, item); });