基本方法
-思路:創(chuàng)建一個新數(shù)組,遍歷原數(shù)組,喏遍歷的元素在新數(shù)組不存在就添加到數(shù)組中,反之則忽略
function unArray(arr){
var res = [];
for(var i = 0; i< arr.length ; i++ ){
var repeat = false;
for(var k = 0 ; k < res.length; k++ ){
if(arr[i] === res[j] ){
repeat = true;
break;
}
}
if(!repeat){
res.push(arr[i]);
}
}
return res
}
先排序再去重
-思路:先對數(shù)組排序,再定義一個新的數(shù)組,變量排序后的數(shù)組,喏排序后的數(shù)組元素不等于新數(shù)組的最后一個元素,則添加。
function unArray(arr) {
function sortNumber(a,b) {
return a-b;
}
var newArr = arr.sort(sortNumber);
var res = [];
for (var i = 0 ; i < newArr.length ; i++){
if (newArr[i] !== res[res.length-1 ]){
res.push(newArr[i]);
}
}
return res;
}
對象去重
-思路:利用對象的屬性,遍歷數(shù)組,喏數(shù)組元素不是對象的屬性,則添加
function unArray(arr) {
var res = [];
var temp = {};
for (var i = 0 ; i < arr.length; i++){
if (!temp[arr[i]]){
res.push(arr[i]);
temp[arr[i]] = 1;
}
}
return res;
}
filter or indexOf 方法
-思路:通過filter篩選出去重后的數(shù)組,喏indexOf方法在該元素之后再查不到該元素的位置,表示該元素不存在,符合要求。
function unArray(arr) {
return arr.filter(function (item,index,array) {
return array.indexOf(item, index+1) === -1;
})
}
ES6 Set
-思路:利用ES6中的Set不包含重復(fù)元素的思想,為數(shù)組創(chuàng)建Set對象,再將對象轉(zhuǎn)換為數(shù)組
function unArray(arr) {
return Array.from(new Set(arr))
}