从数组内的对象获取属性值

时间:2016-07-11 18:47:17

标签: javascript

我试图从属于" class"的每个数组中的对象中获取类code属性。 (我知道我的数据很复杂)。

这是我的学生阵列:

student = [
     {"class":[{
          "code":"PSJ001",
          "professor":"McHale",
          "description":"course description"}]
     },
     {"class":[{
          "code":"ENG303",
          "professor":"Dench",
          "description":"course description"}]
      },
     {"class":[{
          "code":"SCI003",
          "professor":"Biju",
          "description":"course description"}]
     }
]

我想要得到的是......

['PSJ001','ENG303','SCI003']

这就是我的......

let classCodes = [];
for (const i in student) {
   classCodes = classCodes.concat(student[i].map(obj => {
       return obj.code;
   }));
}

我在这里做错了什么? (用jsx编写)

2 个答案:

答案 0 :(得分:4)

您可以使用map()获得所需的结果

var student = [{"class":[{"code":"PSJ001","professor":"McHale","description":"course description"}]},{"class":[{"code":"ENG303","professor":"Dench","description":"course description"}]},{"class":[{"code":"SCI003","professor":"Biju","description":"course description"}]}];

var result = student.map(function(e) {
  return e.class[0].code;
});

console.log(result)

答案 1 :(得分:0)

基本上这将是可靠的:

student.map(o => o.class.map(c => c.code)).reduce((obj, arr) => arr.push(...obj) && arr, []);

首先我们使用.map()来获取类,然后我们再次使用.map()来获取代码。这给了我们一组数组。然后我们使用.reduce()来展平该数组。