1. 程式人生 > 實用技巧 >es6陣列去重

es6陣列去重

陣列中的物件的某一元素去重

(一)陣列內的元素是基本型別的情況

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;
 }