javascript - 在对象数组中查找最小值并返回其他属性的最佳方法?

标签 javascript arrays ecmascript-6

我有一个对象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/

相关文章:

javascript - 正则表达式查找第一个左括号和最后一个右括号以在 JS 中拆分

javascript - 如何将函数数组应用于 Javascript 中相应参数的数组?

arrays - 在 R 中将多列转换为 Json 数组?

JavaScript/JQuery : use $(this) in a variable-name

javascript - 在使用 Javascript 上传之前删除选定的文件

angular - 悬停时在 amcharts 4 中堆叠单列

javascript:使用 EcmaScript 6/immutable js 左合并两个对象

javascript - 将整个代码块包装在 Promise 中时 Promise 和 Deferred 之间的区别?

javascript - 无法从下载的 blob 中读取 ulatedStreamBody

java - 我如何知道是使用数组还是数组列表?