js 获取数组指定字段最大值

js yekong

项目开发中,我们经常需要获取数组中的最大值,这时候我们可以通过很多方式来获取到:

使用Math.max

const arr = [1, 2, 3, 5, 4, 900]
const maxNum = Math.max(...arr)
console.log(maxNum)

使用sort排序取第一个值

const arr = [1, 2, 3, 5, 4, 900]
const newArr = arr.sort((a,b)=>b-a)
console.log(newArr[0]) // 900

通过遍历获取最大值

const arr = [1, 2, 3, 5, 4, 900]
var maxNum = arr[0];
for(let i=0; i<arr.length; i++){
  if( arr[i] > maxNum ){
    maxNum = arr[i]
  }
}
console.log(maxNum)

上面的方法都可以获取到数组中的最大值,不过我们的数组中可能并不是只有数字比如下面的数据

[{
  name: '测试1',
  num: 200,
}, {
  name: '测试2',
  num: 10,
}, {
  name: '测试3',
  num: 40,
}, {
  name: '测试4',
  num: 50,
}, {
  name: '测试5',
  num: 100,
}, {
  name: '测试6',
  num: 10,
}, {
  name: '测试7',
  num: 80,
}, {
  name: '测试8',
  num: 90,
}]

这时候我们如果想用上面的方法的话,就需要先把关键数据先提取出来然后再进行最大值获取比如:

var arr = []
list.forEach((type) => {
    arr.push(type.num)
});
const maxNum = Math.max(...arr)
console.log(maxNum)

获取数组指定字段最大值

我们也可以封装一下,然后接受数组以及需要获取的字段,这样可以在很多环境下复用。

封装

getMaxNumByKey(list, key) {
  var maxNum = list[0][key];
  list.forEach((type) => {
    if (type[key] > maxNum) {
      maxNum = type[key]
    }
  });
  return maxNum
},

使用

var max = this.getTotalByKey(this.list, 'num')
喜欢