es6陣列去重(連重複的物件也可以去掉)

前端開膛手發表於2018-06-06

1,去除簡單型別

//ES6中新增了Set資料結構,類似於陣列,但是 它的成員都是唯一的 ,其建構函式可以接受一個陣列作為引數,如:
let array = [1, 1, 1, 1, 2, 3, 4, 4, 5, 3];
 let set = new Set(array);
 console.log(set);
 // => Set {1, 2, 3, 4, 5}

//ES6中Array新增了一個靜態方法Array.from,可以把類似陣列的物件轉換為陣列,如通過querySelectAll方法得到HTML DOM Node List,以及ES6中新增的Set和Map等可遍歷物件,如: let set = new Set();
 set.add(1).add(2).add(3);
 let array = Array.from(set);
 console.log(array);
 // => [1, 2, 3]

       //於是,現在我們可以用一行程式碼實現陣列去重了:
      let array = Array.from(new Set([1, 1, 1, 2, 3, 2, 4]));
      console.log(array);
      // => [1, 2, 3, 4]複製程式碼

2,去除引用型別

var arr = [{
    "name": "ZYTX",
    "age": "Y13xG_4wQnOWK1QwJLgg11d0pS4hewePU95UHtpMl3eE81uS74NC-6zu-Rtnw4Ix",
    "gender": "AAAAAA.doc"
}, {
    "name": "ZYTA",
    "age": "Y13xG_4wQnOWK1QwJLgg11d0pS4hewePU95UHtpMl3eE81uS74NC-6zu-Rtnw4Ix",
    "gender": "BBBBBB.doc"
}, {
    "name": "ZDTX",
    "age": "Y13xG_4wQnOWK1QwJLgg11d0pS4hewePU95UHtpMl3eE81uS74NC-6zu-Rtnw4Ix",
    "gender": "CCCCCC.doc"
}, {
    "name": "ZYTX",
    "age": "Y13xG_4wQnOWK1QwJLgg11d0pS4hewePU95UHtpMl3eE81uS74NC-6zu-Rtnw4Ix",
    "gender": "AAAAAA.doc"
}];
var hash = {};
arr = arr.reduce(function(item, next) {
    hash[next.name] ? '' : hash[next.name] = true && item.push(next);
    return item
}, [])
console.log(arr);複製程式碼


相關文章