【问题标题】:How can I use a forEach method for or any array methods for Objects of arrays in Javascript?如何在 Javascript 中为数组对象使用 forEach 方法或任何数组方法?
【发布时间】:2020-01-05 01:39:17
【问题描述】:

我正在学习在数组上使用现代数组方法,但是有没有办法可以在数组对象上使用这些方法?如果不是,将整个对象存储到一个数组中会更好吗?

var course = {
  name: "My Javascript Tutorial",
  awesome: true,
  teachers: ["Brandon", "Shane", "Mike"],
  students: [
    {
      name: "Cliff",
      computer: {
        OS: "macOS",
        type: "iMac"
      }
    },
    {
      name: "Arthur",
      computer: {
        OS: "macOS",
        type: "Macbook Pro"
      }
    },
    {
      name: "Donald",
      computer: {
        OS: "macOS",
        type: "Windows PC"
      }
    }
  ]
};


course.forEach(function(item){
    console.log(course.students[item].name + 'uses a ' + course.students[item].computer.type);
})

这是我遇到的错误。

TypeError: 无法读取未定义的属性“学生”

【问题讨论】:

    标签: javascript arrays node.js object


    【解决方案1】:

    您要迭代的数组是course.students,因此请引用course.students 并在其上调用forEach

    forEach 的第一个参数将是被迭代的项目(数组的一个元素)。因为您的元素是对象,请引用它们的 namecomputer 属性以正确记录它们:

    var course = {
      name: "My Javascript Tutorial",
      awesome: true,
      teachers: ["Brandon", "Shane", "Mike"],
      students: [
        {
          name: "Cliff",
          computer: {
            OS: "macOS",
            type: "iMac"
          }
        },
        {
          name: "Arthur",
          computer: {
            OS: "macOS",
            type: "Macbook Pro"
          }
        },
        {
          name: "Donald",
          computer: {
            OS: "macOS",
            type: "Windows PC"
          }
        }
      ]
    };
    
    
    course.students.forEach(function(item){
        console.log(item.name + 'uses a ' + item.computer.type);
    })

    【讨论】:

      【解决方案2】:

      如果你想在对象内循环遍历你的学生数组,那么你必须在数组中使用索引,因此在 foreEach 中添加一个 i 变量

      course.students.forEach(function(item, i) {
          console.log(course.students[i].name + 'uses a ' + course.students[i].computer.type);
      })
      

      或者只是使用对象/项目并在每次迭代中显示该对象的属性

      course.students.forEach(function (item) {
        console.log(item.name + 'uses a ' + item.computer.type);
      })
      

      【讨论】:

        【解决方案3】:

        问题是,您试图在对象上使用 forEach 循环,这是不受支持的。接下来您遇到的问题是您试图在函数内调用学生姓名,但无法直接找到价值课程。

        您可以执行以下操作:

        course.students.forEach(function(student) {
            console.log(student.name); 
        });
        

        【讨论】:

        • 很好的回应谢谢,让我写 course.students.forEach(function(student){ console.log(student.name + 'uses a ' + student.computer.type); }) ;
        【解决方案4】:

        forEach() 函数调用仅支持数组,不支持对象。

        在你的情况下,如果你想遍历数组students,那么你必须首先从课程对象中获取对students数组的引用。

        您可以这样继续:

            course.students.forEach(function(item){
        console.log(item.name + 'uses a ' + item.computer.type); })
        

        【讨论】:

        • 请在代码 sn-p 中插入最后一个键和括号'})',谢谢
        • 完成 :) @borchvm
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-30
        • 2012-02-27
        • 2021-11-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多