项目开发中,我们经常需要获取数组中的最大值,这时候我们可以通过很多方式来获取到:
使用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')