Javascript 如何在包含对象的数组中循环并访问其属性

Javascript 如何在包含对象的数组中循环并访问其属性,javascript,arrays,iteration,Javascript,Arrays,Iteration,我想循环遍历数组中包含的对象,并更改每个对象的属性。如果我这样做: for (var j = 0; j < myArray.length; j++){ console.log(myArray[j]); } for(var j=0;j

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

for (var j = 0; j < myArray.length; j++){

console.log(myArray[j]);

}
for(var j=0;j
控制台应该显示数组中的每个对象,对吗?但实际上它只显示第一个对象。如果我将数组记录在循环之外,那么所有对象都会出现,因此肯定会有更多的对象

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

for (var j = 0; j < myArray.length; j++){

console.log(myArray[j.x]);

}
for(var j=0;j
这将返回“undefined”。循环外部的控制台日志再次告诉我,所有对象都有“x”的值。如何访问循环中的这些属性

for (var j = 0; j < myArray.length; j++){

console.log(myArray[j.x]);

}
其他地方建议我对每个属性使用单独的数组,但我想确保我首先已经用尽了这条途径


谢谢大家!

将其作为内置数组函数使用:

for(var j=0;j
myArray[j.x]
在逻辑上不正确

使用
(myArray[j].x)取而代之

for (var j = 0; j < myArray.length; j++){
  console.log(myArray[j].x);
}
for(var j=0;j
自ES5+以来,使用forEach方法非常简单。可以直接更改数组中每个对象的每个属性

myArray.forEach(function (arrayElem){ 
  arrayElem = newPropertyValue;
});
如果要访问每个对象上的特定属性,请执行以下操作:

myArray.forEach(function (arrayElem){ 
      arrayElem.nameOfYourProperty = newPropertyValue;
    });
可以使用循环在对象数组上循环

for (let item of items) {
    console.log(item); // Will display contents of the object inside the array
}
关于
for..of
循环的一个优点是,它们可以迭代的不仅仅是数组。您可以迭代任何类型的iterable,包括贴图和对象。如果需要支持较旧的浏览器,请确保使用transpiler或类似于TypeScript的东西

如果要在映射上迭代,语法基本上与上面相同,只是它同时处理键和值

for (const [key, value] of items) {
  console.log(value);
}

我使用
for..of
循环进行Javascript中几乎每种迭代。此外,最酷的事情之一是,它们还可以与async/await一起使用。

这里是迭代对象数组的另一种方式(您需要在文档中包含jQuery库来实现这些)


在对象数组中循环是一项非常基本的功能。这对我来说很有用

var person=[];
个人[0]={
名字:“约翰”,
姓:“Doe”,
年龄:60
};
变量i,项目;
对于(i=0;i”;
}

}
下面是一个关于如何做到这一点的示例:)

var学生=[{
姓名:“迈克”,
曲目:“曲目a”,
成绩:23,
分:400分,
},
{
姓名:“詹姆斯”,
曲目:“曲目a”,
成绩:2,
积分:21,
},
]
forEach(myFunction);
函数myFunction(项目、索引){
用于(var输入项){
console.log(项[键])
}

}
这样就行了。循环整个数组(yourArray)。然后循环遍历每个对象的直接属性(eachObj)


数组对象迭代,使用jQuery, (使用第二个参数打印字符串)


JavaScript中以函数式编程方式在数组中循环的一些用例:

1.只需在数组中循环 注意:Array.prototype.forEach()严格来说不是一种函数方式,因为它作为输入参数的函数不应该返回值,因此不能将其视为纯函数

2.检查数组中的任何元素是否通过测试 3.转换为新数组 注意:map()方法创建一个新数组,其中包含对调用数组中的每个元素调用所提供函数的结果

4.对某一特性求和,并计算其平均值 5.基于原始阵列创建新阵列,但不进行修改 6.计算每个类别的数量 7.根据特定条件检索数组的子集 注意:filter()方法创建一个新数组,其中包含通过所提供函数实现的测试的所有元素

8.对数组排序

9在数组中查找元素

方法返回数组中满足提供的测试函数的第一个元素的值

工具书类

    • 接受的答案使用正常功能。因此,在forEach上使用arrow函数发布相同的代码,只需稍加修改

        yourArray.forEach(arrayItem => {
            var x = arrayItem.prop1 + 2;
            console.log(x);
        });
      
      同样以美元为单位。您可以使用箭头函数,如下所示

       $.each(array, (item, index) => {
             console.log(index, item);
       });
      
      const作业=[
      {
      姓名:“西弗”,
      家庭:“sipherplus”,
      职务:“Devops”
      },
      {
      姓名:“约翰”,
      家庭:“Doe”,
      职务:“Devops”
      },
      {
      姓名:“吉姆”,
      家庭:“史密斯”,
      职务:“Devops”
      }
      ];
      常量txt=
      `
        ${jobs.map(job=>`
      • ${job.name}${job.family}->${job.job}
      • `)。加入(“”)}
      ` ; document.body.innerHTML=txt
      var c={
      我的财产:[
      {name:'this'},
      {name:'can'},
      {name:'get'},
      {name:'疯狂'}
      ]
      };
      c、 forEach(函数(myProperty\u元素){
      var x=myProperty_element.name;
      console.log('成员的名称为:'+x);
      
      })
      这可能对某人有所帮助。可能是节点中的错误

      var arr = [ { name: 'a' }, { name: 'b' }, { name: 'c' } ];
      var c = 0;
      
      这不起作用:

      while (arr[c].name) { c++; } // TypeError: Cannot read property 'name' of undefined
      
      但这是有效的

      while (arr[c]) { c++; } // Inside the loop arr[c].name works as expected.
      
      这也行

      while ((arr[c]) && (arr[c].name)) { c++; }
      
      但简单地颠倒顺序是行不通的。我猜这里有某种破坏节点的内部优化

      while ((arr[c].name) && (arr[c])) { c++; }
      

      Error表示数组未定义,但它不是:-/Node v11.15.0

      我知道这已经很长时间了,但对于遇到此问题的任何其他人来说,我的问题是我在一个只包含一个数组的数组中循环。像这样:

      // array snippet (returned from here)
      } else {
         callback([results])
      }
      
      我是这样使用数组的const myArray = [{x:100}, {x:200}, {x:300}]; const newArray= myArray.map(element => { return { ...element, x: element.x * 2 }; }); console.log(myArray); // [100, 200, 300] console.log(newArray); // [200, 400, 600]
      const people = [
          {name: 'John', group: 'A'}, 
          {name: 'Andrew', group: 'C'}, 
          {name: 'Peter', group: 'A'}, 
          {name: 'James', group: 'B'}, 
          {name: 'Hanna', group: 'A'}, 
          {name: 'Adam', group: 'B'}];
      
      const groupInfo = people.reduce((groups, person) => {
          const {A = 0, B = 0, C = 0} = groups;
          if (person.group === 'A') {
              return {...groups, A: A + 1};
          } else if (person.group === 'B') {
              return {...groups, B: B + 1};
          } else {
              return {...groups, C: C + 1};
          }
      }, {});
      
      console.log(groupInfo); // {A: 3, C: 1, B: 2}
      
      const myArray = [{x:100}, {x:200}, {x:300}];
      
      const newArray = myArray.filter(element => element.x > 250);
      console.log(newArray); // [{x:300}] 
      
      const people = [
        { name: "John", age: 21 },
        { name: "Peter", age: 31 },
        { name: "Andrew", age: 29 },
        { name: "Thomas", age: 25 }
      ];
      
      let sortByAge = people.sort(function (p1, p2) {
        return p1.age - p2.age;
      });
      
      console.log(sortByAge);
      
      const people = [ {name: "john", age:23},
                      {name: "john", age:43},
                      {name: "jim", age:101},
                      {name: "bob", age:67} ];
      
      const john = people.find(person => person.name === 'john');
      console.log(john);
      
        yourArray.forEach(arrayItem => {
            var x = arrayItem.prop1 + 2;
            console.log(x);
        });
      
       $.each(array, (item, index) => {
             console.log(index, item);
       });
      
      var arr = [ { name: 'a' }, { name: 'b' }, { name: 'c' } ];
      var c = 0;
      
      while (arr[c].name) { c++; } // TypeError: Cannot read property 'name' of undefined
      
      while (arr[c]) { c++; } // Inside the loop arr[c].name works as expected.
      
      while ((arr[c]) && (arr[c].name)) { c++; }
      
      while ((arr[c].name) && (arr[c])) { c++; }
      
      // array snippet (returned from here)
      } else {
         callback([results])
      }
      
      for(const result of results){
         console.log(result.x)
      }
      
      for (element in array) {
          console.log(array[element].property);
        }
      
      this.data = [{name:"Rajiv", city:"Deoria"},{name:"Babbi", city:"Salempr"},{name:"Brijesh", city:"GKP"}];
      for(const n of this.data) {
          console.log(n.name)
      }