首页 > 解决方案 > 如何从必须通过测试的新数组中返回包含对象的数组中的特定值?

问题描述

您好,我正在尝试找到解决方案,但在我自己的研究中找不到正确的答案,希望有人可以帮助我解决我的问题。该任务要求我必须编写一个函数,该函数在一个新数组中返回每个 16 岁或以上的人的姓名。目标是编写一个在我的示例中返回的函数: ['Jane', 'Jack']


function onlyAdult(obj) {

}


const examplePeopleArray = [
  { name: 'John', age: 15 },
  { name: 'Jane', age: 16 },
  { name: 'Jack', age: 17 }
];

console.log(onlyAdult(examplePeopleArray));


我尝试使用 for 循环来管理任务,该循环遍历数组并连接 if 语句,但这种方式不起作用。在此之后,我尝试使用every()、filter()、forEach()、map()、some() 为我的任务找到正确的方法,但这些方法实际上都不适用于我的任务。

function onlyAdult(obj) {
for (i = 0; i < obj.length; i++) {
  if (obj[0].age >= 16) {
    return obj[0].age;
  } else if (obj[1].age >= 16) {
    return obj[1].age;
  } else if (obj[2].age >= 16) {
    return obj[2].age;
  }
}
}

我知道我的代码是错误的,也知道我试图解决它的方式,如果有人可以帮助我,我将不胜感激。

标签: javascriptarraysfunctionfilterjavascript-objects

解决方案


您可以先使用过滤数组.filter(),然后使用.map()仅获取所需的属性值。

const data = [
  { name: 'John', age: 15 },
  { name: 'Jane', age: 16 },
  { name: 'Jack', age: 17 }
];

const result = data.filter(({ age }) => age >= 16).map(({ name }) => name);
                   
console.log(result);

参考:


推荐阅读