es6陣列去重
阿新 • • 發佈:2020-08-21
陣列中的物件的某一元素去重
(一)陣列內的元素是基本型別的情況
const arr = [1, 2, 1, 1, null, undefined, undefined, null, "hello", "hello"]
function unique(arr) { return Array.from(new Set(arr)) }
unique(arr);
返回:[1, 2, null, undefined, "hello"]
const arr = [1, 2, 1, 1, null, undefined, undefined, null, "hello", "hello"] function unique(arr) {//定義常量 res,值為一個Map物件例項 const res = new Map(); //返回arr陣列過濾後的結果,結果為一個數組 //過濾條件是,如果res中沒有某個鍵,就設定這個鍵的值為1 return arr.filter((a) => !res.has(a) && res.set(a, 1)) } unique(arr);
返回:[1, 2, null, undefined, "hello"]
參考連結:https://www.cnblogs.com/zhishaofei/p/9036943.html
(二)陣列內的元素是引用的情況
function unique(arr) { let obj = {}; let newArr = []; // 存放去重後的陣列 newArr = arr.reduce((cur, next) => { obj[next.props.id] ? "" : obj[next.props.id] = true && cur.push(next); return cur; },[]) //設定cur預設型別為陣列,並且初始值為空的陣列 return newArr; }