分享陣列去重的五種方式
阿新 • • 發佈:2020-08-23
陣列去重的五種方式
<script> // 1 indexOf() 陣列中查詢元素的第一個索引,有返回值,沒有返回 -1 let arr = [1, 2, 3, 4, 3, 2, 4, 6, 8, 6]; let newArr = []; function deduplication(array) { for (let i = 0; i < array.length; i++) { // 在新陣列中查詢 去重陣列的每個值 indexOf() if (newArr.indexOf(array[i]) === -1) { newArr.push(array[i]); } } return newArr; } const res = deduplication(arr); console.log(res); // 2, sort 先把陣列 排序,相同的元素在一起,再進行前後元素的比較, // 如果前後值不相等,把後值push到新陣列中 let arr = [1, 2, 3, 4, 3, 2, 4, 6, 8, 6]; let newArr = []; function deduplication(array) { arr = arr.sort(); let newArr = [arr[0]]; // 先把第一陣列的元素賦值給新陣列 for (let i = 1; i < array.length; i++) { if (array[i - 1] !== array[i]) { newArr.push(array[i]); // 這樣就不能獲得第一個元素 } } return newArr; } const res = deduplication(arr); console.log(res); // 3 filter 採用過濾器 返回true 把當前值存放到新陣列中 false不存放 , // 然後利用 indexOf(index ,0(從那個位置開始)) 查詢陣列中元素的第一個索引值 let arr = [1, 2, 3, 4, 3, 2, 4, 6, 8, 6]; let newArr = []; function deduplication(array) { newArr = arr.filter((item, index, array) => { // 查詢陣列中 元素的第一個索引值 ,如果有重複的 比較索引值時, // 僅僅拿元素的第一個索引值來與 filter中的item,的index 進行比較,肯定不相等 返回false return array.indexOf(item, 0) === index; }); return newArr; } const res = deduplication(arr); console.log(res); // 4 includes 查詢陣列中是否包含某一個值,包含返回true,否則返回false let arr = [1, 2, 3, 4, 3, 2, 4, 6, 8, 6]; let newArr = []; function deduplication(array) { for (let i = 0; i < array.length; i++) { // 查詢 新陣列中是否包含 需要去重陣列的每個元素 不包含 取反,然後把改元素push到新陣列 if (!newArr.includes(array[i])) { newArr.push(array[i]); } } return newArr; } const res = deduplication(arr); console.log(res); // 5, // [Array.from()] :把偽陣列或可迭代物件轉換為陣列 // [new Set()] :把陣列中重複的值去掉,返回一個Set 例項物件 let arr = [1, 2, 3, 4, 3, 2, 4, 6, 8, 6]; let newArr = []; function deduplication(array) { // 把陣列去重 const setter = new Set(array) // 把 物件轉換為 陣列 newArr = Array.from(setter) return newArr; } const res = deduplication(arr); console.log(res); </script>
有什麼問題小夥伴們可以及時指出,謝謝