在項目中偶爾會用到數組,通過原生js去除數組的重復項。簡單的記下幾種方法,親測可用。。
第一種方法:
var Arr = [0,0,1,1,2,2,3,3,4,4,5,5,6,7,8,9];
function unArray (Arr) {
var newArr = [];
for (var i = 0; i < Arr.length; i++) {
if (newArr.indexOf(Arr[i]) == -1){//檢測newArr數組里是否包含Arr數組的內容,==-1檢索的字符串沒有出現則為-1
newArr.push(Arr[i])//把Arr數組的第i項插入新數組
}
};
return newArr;
}
unArray(Arr);
//console.log(unArray(Arr));
第一種方法是檢測新數組newArr里有沒有包含Arr里的i項,如果沒有則向newArr里添加Aii[i]項,如果有則跳過;不做任何操作。
第二種方法:
var Arr = [0,0,1,1,2,2,3,3,4,4,5,5,6,7,8,9];
function unArray (Arr) {
var newArr = [Arr[0]];
for (var i = 0; i < Arr.length; i++) {
if (Arr.indexOf(Arr[i]) == i){//檢測Arr數組第一次出現的位置是i
newArr.push(Arr[i])//把Arr數組的第i項插入新數組newArr
}
};
return newArr;//返回新數組newArr
}
unArray(Arr);
//console.log(unArray(Arr));
第二種方法是在Arr數組里檢測,Arr.indexOf(Arr[i])返回某一項在Arr數組里第一次出現的位置,如果第一次出現就push到newArr數組去,如果第二次出現,則什么都不操作。
第三種方法:
var Arr = [0,0,1,1,2,2,3,3,4,4,5,5,6,7,8,9];
function unArray (Arr) {
var newArr = [],hash = {};//hash位hash表
for (var i = 0; i < Arr.length; i++) {
if (!hash[Arr[i]]){//如果hash表里沒有第i項則
hash[Arr[i]] = true;//把第i項插入到hash表里
newArr.push(Arr[i])//把Arr數組的第i項插入新數組。此方法的時間消耗長,內存消耗大;
}
};
return newArr;
}
unArray(Arr);
//console.log(unArray(Arr));
第三種是關于hash表的,不太熟悉hash表,所以用到的很少啊。。
第四種方法
var Arr = [0,0,1,1,2,2,3,3,4,4,5,5,6,7,8,9];
function unArray (Arr) {
Arr.sort();//先排序
var newArr = [Arr[0]],firstArr = Arr[0];//創建一個新數組和一個變量firstArr,并賦值為數組Arr的第一個值
for (var i = 0; i < Arr.length; i++) {
if (Arr[i] !== firstArr){//如果數組的第i個不等于firstArr;
newArr.push(Arr[i]);//把第Arr[i]項插入新數組newArr
firstArr = Arr[i];//重新設置變量firstArr為rr[i],也就是剛插入newArr的那一項
}
};
return newArr;//返回新數組newArr
}
unArray(Arr);
// console.log(unArray(Arr));
此方法還的謝謝二樓。