有多種實現方式: 一、使用 Set 對象: Array.from(new Set(array)) 該方法會先創建一個 Set 對象,然後再使用 Array.from 方法將 Set 對象轉換為數組,因為 Set 對象不允許有重覆的元素,所以這樣可以實現去重的效果。 但是,如果數組中的元素是對象,Se ...
有多種實現方式:
一、使用 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);