繁体   English   中英

如何从必须在测试中通过新数组的对象中的数组返回特定​​值?

[英]How to return specific values from an array with objects inside in a new array which must pass a test?

您好,我正在尝试获取解决方案,但在我自己的研究中找不到正确的答案,希望有人可以帮助我解决我的问题。 该任务要求我必须编写一个函数,该函数将在新数组中返回每个人的姓名,该姓名等于或大于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;
  }
}
}

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

您可以先使用.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); 

参考文献:

 const examplePeopleArray = [ { name: 'John', age: 15 }, { name: 'Jane', age: 16 }, { name: 'Jack', age: 17 } ]; const result = examplePeopleArray.reduce((arr, el) => { if (el.age >= 16) arr.push(el.name) return arr }, []) 

对于这个给定的任务, reduce就足够了。 在这里,我们根据年龄比较将输入数组简化为过滤后的字符串值的数组。 如果年龄在16岁以下,我们什么也不做,而是跳到下一个元素。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM