ES6 对象数组常用方法总结
一、查找对象数组某个属性的最大值和最小值
查找List数组中对象的age属性的最大值
let List=[
{
"id": 1,
"name": "张三",
"value": 20
},
{
"id": 2,
"name": "李四",
"value": 23
},
{
"id": 3,
"name": "赵五",
"value": 21
}]
查找最大值、最小值代码
let maxValue = List.length > 0 ? Math.max.apply(Math, List.map(function(item) { return item.value })) : 0
let minValue = List.length > 0 ? Math.min.apply(Math, List.map(function(item) { return item.value })) : 0
console.log('maxValue :', maxValue ) //23
console.log('minValue :', minValue ) //20
上面代码中做了对象数组的长度判断,当对象数组的长度为0时,默认最大值和最小值等于0,因为对象数组为0时,Math.max.apply(Math, List.map(function(item) { return item.value })) 会返回 -Infinity
二、在对象数组中查找对象
查找对象数组中符合条件的对象
let List=[
{
"id": 1,
"name": "张三",
"value": 20
},
{
"id": 2,
"name": "李四",
"value": 23
},
{
"id": 3,
"name": "李四",
"value": 26
},
{
"id": 4,
"name": "赵五",
"value": 21
}]
使用 find 和 filter
let findData = List.find(item => item.name == '李四')
let filterData = List.filter(item => item.name == '李四')
// findData : {id:2, name:'李四', value: 23}
// filterData : [{id: 2, name: '李四', value: 23},{id: 3, name: '李四', value: 26}]
注意: find只会返回第一个满足条件的, 而且返回的是对象。filter会返回满足所有符合条件的, 返回的还是数组。
三、数组去重
普通数组使用 new Set 去重
let List = [1,2,3,1,2,3]; let newList = new Set(List); console.log(newList);
对象数组使用 reduce 去重
let List= [
{
key: 1,
value: 'value1'
},
{
key: 2,
value: 'value2'
},
{
key: 3,
value: 'value3'
},
{
key: 1,
value: 'value1'
}];
let objList= {};
let newList= List.reduce((item, next)=>{
objList[next.id] ? '' : objList[next.id] = true && item.push(next);
return item;
},[])