如何解决按最高值包括最高匹配值过滤对象数组
我不知道为什么这不起作用...
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,{ firstName: 'Sou',country: 'Japan',]
对于上面的例子,函数需要返回这个:
[
{ firstName: 'Gabriel',]
我已经研究了 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,{ firstName: 'Sou',country: 'Japan',];
const findOldest = (list) => {
const maxAge = Math.max(...list.map(obj => obj.age));
return list.filter(obj => obj.age === maxAge);
};
console.log(findOldest(list));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。