前端面試題之JS物件陣列去重
阿新 • • 發佈:2019-02-07
前幾天去找實習,碰到一道JS物件陣列去重的題目,解法其實與JS普通陣列去重的方法類似。
1.JS陣列去重
方法1:
var arr = [1,1,2,2,2,3,4,5,6,7,8,9,9,9,10];
var newArr = [...new Set(arr)];//ES6的新語法
console.log(newArr);
方法2:
var arr = [1,1,2,2,2,3,4,5,6,7,8,9,9,9,10]; var newArr = arr.filter((item,index,array)=>{ return arr.indexOf(item) === index; }) console.log(newArr);
2.JS物件陣列去重
物件陣列去重有很多方法,下面介紹一種最容易理解的辦法:把數組裡的物件轉化成字串JSON.stringify(),再利用JS陣列去重的方法2來處理陣列即可。
var arr = [{a:1,b:2},{a:1,b:2},{a:3,b:1},{a:5,b:2},{a:3,b:1}];//物件陣列 var stringArr = arr.map((item,index,array)=>{ return JSON.stringify(item) })//轉化為字串陣列 var filterArr = stringArr.filter((item,index,array)=>{ return array.indexOf(item) === index; })//過濾相同的字串 var lastArr = filterArr.map((item,index,array)=>{ return JSON.parse(item); })//重新轉化為物件陣列 console.log(lastArr);//[{a:1,b:2},{a:3,b:1},{a:5,b:2}];