我不知道为什么这不起作用。。。
function findOldest(list) {
let oldest = Math.max.apply(null, list.map(function(dev) { return
dev.age; }));
return list.filter((dev, age) => dev[age].includes(oldest));
}
我只需要返回最年长的人(如果最年长的年龄匹配(。这是一个数组示例:
[
{ firstName: 'Gabriel', country: 'Monaco', age: 49, language: 'PHP' },
{ firstName: 'Odval', country: 'Mongolia', age: 38, language: 'Python' },
{ firstName: 'Emilija', country: 'Lithuania', age: 19, language: 'Python' },
{ firstName: 'Sou', country: 'Japan', age: 49, language: 'PHP' },
]
对于上面的例子,函数需要返回这个:
[
{ firstName: 'Gabriel', country: 'Monaco', age: 49, language: 'PHP' },
{ firstName: 'Sou', country: 'Japan', age: 49, language: 'PHP' },
]
我已经研究过reduce((在这里也可以工作的方法,但没有成功。
我正在学习,这是我在这里的第一个问题。。。请温柔一点。xD
我查阅了我能想到的每一个教程和搜索词,以便自己学习。我不想只得到答案,但我也希望了解它为什么/如何工作。
谢谢你抽出时间。
list.filter((dev, age) => dev[age].includes(oldest))
没有意义,因为age
不是一个外部变量,而是一个普通属性,并且值是一个数字,而不是数组,所以.includes
不起作用。我会使用Math.max
来首先识别最高年龄,然后通过具有该年龄的对象来识别filter
。
const list = [
{ firstName: 'Gabriel', country: 'Monaco', age: 49, language: 'PHP' },
{ firstName: 'Odval', country: 'Mongolia', age: 38, language: 'Python' },
{ firstName: 'Emilija', country: 'Lithuania', age: 19, language: 'Python' },
{ firstName: 'Sou', country: 'Japan', age: 49, language: 'PHP' },
];
const findOldest = (list) => {
const maxAge = Math.max(...list.map(obj => obj.age));
return list.filter(obj => obj.age === maxAge);
};
console.log(findOldest(list));