基于某个字段从数组找出最大的对象
基于某个字段从数组找出最大的对象
如果是原始值数组,比如数字数组找最大值,可直接通过 Math.max(…array)
完成。
如果是对象数组,基于对象某个字段找出值最大的对象,可通过 Array.prototype.reduce
来其妙完成。
考察如下测试数据:
var data = [
{
name: "john",
age: 1,
},
{
name: "david",
age: 2,
},
{
name: "micky",
age: 9,
},
{
name: "tommy",
age: 3,
},
];
利用数组 reduce
方法可这样来操作:
/**
* 从对象数组中找出字段 `key` 值最大的并返回该对象
* @param items
* @param key
* @returns
*/
function findMaxObject(items: IItem[], key: string) {
return items.reduce((prev, current) =>
prev[key] > current[key] ? prev : current
);
}
原理则从第一个开始,逐个往后做比较,返回大的那个,直到进行到数组最后一个元素。
测试:
console.log(findMaxObject(data)) // { name: 'micky', age: 9 }