我有一个对象students
,我想知道最小的学生的名字。
const students = [
{ name: 'Hans', age: 3 },
{ name: 'Ani', age: 7 },
{ name: 'Budi', age: 10 },
{ name: 'Lee', age: 13 }
]
我得到最小的年龄
function getYoungestAge(data) {
return resultMin = data.reduce((min, p) => p.age < min ? p.age : min, data[0].age)
}
getYoungestAge(students) // return 3
我怎样才能不仅返回年龄而且还返回姓名? //示例:3 和 Hans
最佳答案
您始终可以通过reduce
获取整个对象,而不仅仅是年龄
const students = [
{ name: 'Hans', age: 3 },
{ name: 'Ani', age: 7 },
{ name: 'Budi', age: 10 },
{ name: 'Lee', age: 13 }
]
function getYoungestAge(data) {
return data.reduce((min, p) => p.age < min.age ? p : min, data[0])
}
var youngest = getYoungestAge(students)
console.log(youngest);
另一种方法是对列表进行排序并取第一个。注意:这种方式改变了原始数组。这在某些情况下很好,而在其他情况下则不受欢迎。在大多数情况下,我更喜欢上面的第一种方式。
const students = [
{ name: 'Hans', age: 3 },
{ name: 'Ani', age: 7 },
{ name: 'Budi', age: 10 },
{ name: 'Lee', age: 13 }
]
function getYoungestAge(data) {
data.sort( (x,y) => x.age-y.age);
return data[0];
}
var youngest = getYoungestAge(students)
console.log(youngest);
另请注意,这两个这些解决方案都会返回具有最低年龄的第一个项目,其中有超过 1 个学生具有相同的年龄。
关于javascript - 在对象数组中查找最小值并返回其他属性的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48681050/