Javascript 检查每个对象年龄的对象数组,然后返回符合该年龄的所有对象的名称

Javascript 检查每个对象年龄的对象数组,然后返回符合该年龄的所有对象的名称,javascript,arrays,object,Javascript,Arrays,Object,我在一次考试中遇到了这个问题,但我弄错了,我一直在努力阅读MDN Web文档,但仅仅学习JavaScript一周,我不知道我在找什么。 这是我从考试中回忆起来的,它是一个虚构的状态,只有15岁及以上的孩子才能当保姆。我使用了一个“.find()”,我只能产生一个人,它给了我整个对象,他们只需要名称。我花了一天半的时间自己寻找答案,但我迷路了。救命啊 如果你也有一个链接,我可以阅读更多关于这个的内容,这将是很有帮助的,因为其他学生说他们有类似的,他们要求他们平均所有年龄。阵列和对象已经让我想把头撞

我在一次考试中遇到了这个问题,但我弄错了,我一直在努力阅读MDN Web文档,但仅仅学习JavaScript一周,我不知道我在找什么。 这是我从考试中回忆起来的,它是一个虚构的状态,只有15岁及以上的孩子才能当保姆。我使用了一个“.find()”,我只能产生一个人,它给了我整个对象,他们只需要名称。我花了一天半的时间自己寻找答案,但我迷路了。救命啊

如果你也有一个链接,我可以阅读更多关于这个的内容,这将是很有帮助的,因为其他学生说他们有类似的,他们要求他们平均所有年龄。阵列和对象已经让我想把头撞到墙上了

function legalBabysitter(sitters){
};

/*Do not modify anything below this line*/

const babysitterArray = [
    {name: 'Peter', age: 13},
    {name: 'Paul', age: 15},
    {name: 'Mary', age: 17}
];

console.log(legalBabysitter(babysitterArray)); // should produce [Paul, Mary]
你可以用

这是我的想法

  • 循环阵列
  • 检查年龄是否大于或等于
    15
    并将姓名添加到op
  • 否则就保持原样
  • 从函数返回op
功能Legalbysitter(sitters){
返回座。减少((op,inp)=>{
如果(输入年龄>=15){
op.push(输入名称)
}
返回操作
},[])
};
/*请勿修改此行下方的任何内容*/
常量保姆数组=[
{姓名:'彼得',年龄:13},
{姓名:'保罗',年龄:15},
{姓名:“玛丽”,年龄:17}
];

log(legalbysitter(babystitterarray))//
您可以像这样使用fitler和map
return sitters.filter(c=>c.age>=15).map(c=>c.name)

功能Legalbysitter(sitters){
return sitters.filter(c=>c.age>=15)、map(c=>c.name);
};
/*请勿修改此行下方的任何内容*/
常量保姆数组=[
{姓名:'彼得',年龄:13},
{姓名:'保罗',年龄:15},
{姓名:“玛丽”,年龄:17}
];

console.log(legalbysitter(babystitterarray));//应该产生[Paul,Mary]
如果你只需要考试,你可以使用for循环,这是非常清楚的

function legalBabysitter(sitters){
  var result = [];
  for(var i =0; i < sitters.length; i ++){
     if(sitters[i].age >= 15){
        result.push(sitters[i].name);
     }
  }
  return result;
};
功能Legalbysitter(sitters){
var结果=[];
对于(变量i=0;i=15){
result.push(坐姿[i].name);
}
}
返回结果;
};
功能Legalbysitter(sitters){
var结果=[];
对于(变量i=0;i=15){
result.push(坐姿[i].name);
}
}
返回结果;
};
/*请勿修改此行下方的任何内容*/
常量保姆数组=[
{姓名:'彼得',年龄:13},
{姓名:'保罗',年龄:15},
{姓名:“玛丽”,年龄:17}
];
console.log(legalbysitter(babystitterarray));//应该产生[保罗,玛丽]
const babystitterarray=[
{姓名:'彼得',年龄:13},
{姓名:'保罗',年龄:15},
{姓名:“玛丽”,年龄:17}
];
功能Legalbysitter(sitters){
return sitters.filter(\u=>\ uu.age>14).map(\u=>\ uu.name)
};

如果您不知道.filer和.reduce,可以通过.forEach来完成

const babystitterarray=[
{姓名:'彼得',年龄:13},
{姓名:'保罗',年龄:15},
{姓名:“玛丽”,年龄:17}
];
功能Legalbysitter(sitters){
让目标=[];
sitters.forEach(=>{
如果(u.age>14)目标推送(u.name)
})
回报目标;
};

console.log(legalbysitter(babystitterarray))
非常感谢,所以我想我必须读一下“.reduce()”,非常感谢您再次访问MDN Web文档。@virgilorodriguezjr在这种情况下
reduce
map
filter
更好,因为您不需要再次重复感谢。我要通读一遍,更多的知识,以防我再次陷入困境。我将集中讨论
reduce
。编写一个不可读的reduce而不是一个直接的map+过滤器来优化一些循环迭代是不好的做法。@Matsemann你能说明一些关于这方面的参考资料吗,其中指出这是一个不好的做法<代码>编写不可读的reduce
真的吗?它只是有一个简单的if条件,并且答案包含了一些步骤。如果你,我知道.map()但不知道.filter(),我会在MDN上准备好。你只能使用forEach。你应该选择一个答案作为接受的答案:)可能的重复