ES6 物件陣列常用方法總結
阿新 • • 發佈:2022-05-23
一、查詢物件陣列某個屬性的最大值和最小值
查詢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; },[])