talk is cheap,show you the code.
var fruits=
['蘋果'
,'香蕉'
,'葡萄'
,'火龍果'
,'蘋果'
,'葡萄'
,'火龍果'
]distinct
(fruits)
;console.
log(fruits)
;//(4) ["蘋果", "香蕉", "葡萄", "火龍果"]
//雙重迴圈
function
distinct
(arr)}}
return arr;
}
這種方式的去重簡單來說就是我從第乙個開始迴圈剩下的與之對比,去掉相同的所以這個的方式它的時間複雜度是o(n^2),如果陣列長度很大,效率會很低,另外如果陣列中有nan的話也是無法去重的。(nan==nan為false)如果陣列裡面是物件,我們知道每個物件都會開闢乙個新的空間,所以在判斷相等時內容一樣,也不會一樣,所以在構造資料時,我們可以在裡面放乙個唯一標識,一般後端給我媽傳回來的資料應該都有乙個id。
var student=[,
,,,,
]distinct
(student)
;console.
log(student)
;// 0:
// 1:
// 2:
// length: 3
function
distinct
(arr)}}
return arr;
}
var fruits=
['蘋果'
,'香蕉'
,'葡萄'
,'火龍果'
,'蘋果'
,'葡萄'
,'火龍果'
]var fruits1two=
['蘋果'
,'牛油果'
,'桃子'
,'菠蘿'
,'桃子'
]console.
log(
distinct
(fruits,fruits1two));
//(7) ["蘋果", "香蕉", "葡萄", "火龍果", "牛油果", "桃子", "菠蘿"]
加 indexof
function
distinct3
(a, b)
)}
利用indexof檢測元素在陣列中第一次出現的位置是否和元素現在的位置相等,如果不等則說明該元素是重複元素。此方法物件不去重,nan會被忽落掉(arr.indexof(nan)=-1)。
var fruits=
['蘋果'
,'香蕉'
,'葡萄'
,'火龍果'
,'蘋果'
,'葡萄'
,'火龍果'
]console.
log(
distinct
(fruits));
// ["火龍果", "蘋果", "葡萄", "香蕉"]
function
distinct
(array)
seen = sortedarray[i];}
return res;
}
先呼叫陣列的排序方法,然後比較相鄰的兩個是否相等從而實現去重。此方法物件和nan不去重,數字1與字串1也不去重。注:v8引擎 的 sort() 方法在陣列長度小於等於10的情況下,會使用插入排序,大於10的情況下會使用快速排序
可以簡化為:var fruits=
['蘋果'
,'香蕉'
,'葡萄'
,'火龍果'
,'蘋果'
,'葡萄'
,'火龍果'
]console.
log(
distinct
(fruits));
// ["蘋果", "香蕉", "葡萄", "火龍果"]
function
distinct
(array)
甚至:function
distinct
(array)
let
distinct
=(a)
=>
[...
newset
(a)]
es6提供的set 結構的乙個特性就是成員值都是唯一的,沒有重複的值,此方法物件不去重,nan去重。
function
distinct
(array)
;return array.
filter
(function
(item, index, array)
)}
這種方法是利用乙個空的 object 物件,我們把陣列的值存成 object 的 key 值,比如 object[value1] = true,在判斷另乙個值的時候,如果 object[value2]存在的話,就說明該值是重複的,但是最後請注意這裡obj[typeof item + item] = true沒有直接使用obj[item],是因為 123 和 『123』 是不同的,直接使用前面的方法會判斷為同乙個值,因為物件的鍵值只能是字串,所以我們可以使用 typeof item + item 拼成字串作為 key 值來避免這個問題。此方法物件、nan均去重。參考:
js陣列去重五種方法
今天來聊一聊js陣列去重的一些方法,包括一些網上看到的和自己總結的,總共5種方法 es5 這種方法最簡單最直觀,也最容易理解,如下 var arr 2,8,5,0,5,2,6,7,2 var newarr for var i 0 i arr.length i console.log newarr 結...
js陣列去重五種方法
今天來聊一聊js陣列去重的一些方法,包括一些網上看到的和自己總結的,總共5種方法 es5 這種方法最簡單最直觀,也最容易理解,如下 1 var arr 2,8,5,0,5,2,6,7,2 2 var newarr 3 for var i 0 i arr.length i 7 8 console.lo...
js五種簡單的陣列去重方法
第一種方法 雙層迴圈,外層迴圈元素,內層迴圈時比較值,如果有相同的值則跳過,不相同則push進陣列 function distinct arr res.push arr i return res var arr 1,2,3,4,4,1,1,2,1,1,1 var result distinct ar...