去重方式:1、用「Array.from(new Set(arr))」語句;2、用「[…new Set(arr)]」語句;3、用「arr.filter( (item,index)=>arr.indexOf(item)===index)”語句。
本教學操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。
#1、Array.from(new Set(arr))
const arr = [1, 2, 3, 2, 3]; Array.from(new Set(arr)); // [1, 2, 3]
由於Set 中的元素是唯一的,無論是原始值或是物件引用,所以可以透過將陣列轉換成Set 物件來實現去重
Array.from
方法可以將Set 物件轉換成陣列
2、[…new Set(arr)]
const arr = [1, 2, 3, 2, 3]; [...new Set(arr)]; // [1, 2, 3]
這裡是透過ES6
的展開語法將Set 物件轉換成陣列;
#3、arr.filter((item, index) => arr.indexOf(item) == = index)
const arr = [1, 2, 3, 2, 3]; arr.filter((item, index) => arr.indexOf(item) === index); // [1, 2, 3]
indexOf
方法傳回指定元素在陣列中的第一個索引(index), 如果沒有則傳回-1
所以這裡的arr 陣列中的每個元素透過indexOf()
方法傳回的索引值分別是0 1 2 1 2
arr.forEach(item => console.log(arr.indexOf(item))); // 0 1 2 1 2
可以透過indexOf
來實現去重,例如arr 中的第四個元素2
透過indexOf
回傳的是索引是1, 但是它目前的index 下標是3,不相等,說明當前的這個2
元素在之前出現過, 所以應該把它過濾掉
【相關推薦:javascript學習教程】
#以上是javascript數組去重有哪幾種方式的詳細內容。更多資訊請關注PHP中文網其他相關文章!