有多種實作方式:
一、使用 Set 物件:
Array.from(new Set(array))
該方法會先創建一個 Set 物件,然后再使用 Array.from 方法將 Set 物件轉換為陣列,因為 Set 物件不允許有重復的元素,所以這樣可以實作去重的效果,
但是,如果陣列中的元素是物件,Set 物件會識別為不同的元素,所以不能直接使用該方法,為了解決這個問題,你可以使用一個映射函式,將陣列中的物件映射為一個字串或數字,然后再使用該方法,
以下是一個具體的例子:
const arr = [ { id: 1, name: 'A' }, { id: 2, name: 'B' }, { id: 1, name: 'A' }, { id: 3, name: 'C' } ]; const result = Array.from(new Set(arr.map(item => JSON.stringify(item)))).map(item => JSON.parse(item)); console.log(result);
二、使用`reduce`方法:
const arr = [ { id: 1, name: 'A' }, { id: 2, name: 'B' }, { id: 1, name: 'A' }, { id: 3, name: 'C' } ]; const result = arr.reduce((pre, cur) => { var exists = pre.find(item => JSON.stringify(item) === JSON.stringify(cur)); if (!exists) { pre.push(cur); } return pre; }, []); console.log(result);
三、使用`filter`方法
const arr = [ { id: 1, name: 'A' }, { id: 2, name: 'B' }, { id: 1, name: 'A' }, { id: 3, name: 'C' } ]; const result =arr.filter((item, index, self) => { return self.findIndex(t => JSON.stringify(t) === JSON.stringify(item)) === index; }); console.log(result);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/543456.html
標籤:JavaScript
上一篇:原型和原型鏈的深入淺出
