创建一个函数,它接受一个对象数组并根据条件返回一个新数组

eld*_*man 2 javascript arrays

我是一个noob学习javascript.我的导师给了我这个功课.

家庭作业:编写一个函数,它接受一组对象和一个数字maxAge.每个对象都有两个属性:name,age.返回一个新的对象数组,仅包含年龄小于或等于maxAge的对象.

这是我做的:

const objectArray = [

firstObject = {
    name: "Ryan",
    age: 32
},

secondObject = {
  name: "Caroline",
  age: 1
},

thirdObject = {
  name: "Steve",
  age: 35
},

fourthObject = {
  name: "Sheila",
  age: 67
},

fifthObject = {
  name: "Ron",
  age: 67
},

sixthObject = {
  name: "deadGuy",
  age: 150
},

];



const maxAge = 67;


const makeAgeDiscrimArray = (objectArray) => {
  const ageDiscrimArray = [];
  const above67Array = [];
  const length = objectArray.length;
  for (let i = 0; i < objectArray.length; i++) {
    if ((objectArray[i].age <= maxAge)) {
      ageDiscrimArray.push(i)} else {
      above67Array.push(i); // I know, it is a superfluity
      }
    }
    return ageDiscrimArray;
};

console.log(makeAgeDiscrimArray(objectArray));
Run Code Online (Sandbox Code Playgroud)

该函数当前返回

[ 0, 1, 2, 3, 4 ]

我看到发生了什么,但我不完全理解为什么.

在此先感谢您的帮助!

小智 5

您正在向数组添加"i"而不是对象.改为:

for (let i = 0; i < objectArray.length; i++) {
  if ((objectArray[i].age <= maxAge)) {
      ageDiscrimArray.push(objectArray[i])} // <= objectArray[i]
  else {
      above67Array.push(objectArray[i]); // <= objectArray[i]
  }
}
Run Code Online (Sandbox Code Playgroud)