在項(xiàng)目中偶爾會(huì)用到數(shù)組草描,通過(guò)原生js去除數(shù)組的重復(fù)項(xiàng)览绿。簡(jiǎn)單的記下幾種方法,親測(cè)可用穗慕。挟裂。
第一種方法:
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){//檢測(cè)newArr數(shù)組里是否包含Arr數(shù)組的內(nèi)容,==-1檢索的字符串沒(méi)有出現(xiàn)則為-1
newArr.push(Arr[i])//把Arr數(shù)組的第i項(xiàng)插入新數(shù)組
}
};
return newArr;
}
unArray(Arr);
//console.log(unArray(Arr));
第一種方法是檢測(cè)新數(shù)組newArr里有沒(méi)有包含Arr里的i項(xiàng)揍诽,如果沒(méi)有則向newArr里添加Aii[i]項(xiàng),如果有則跳過(guò);不做任何操作栗竖。
第二種方法:
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){//檢測(cè)Arr數(shù)組第一次出現(xiàn)的位置是i
newArr.push(Arr[i])//把Arr數(shù)組的第i項(xiàng)插入新數(shù)組newArr
}
};
return newArr;//返回新數(shù)組newArr
}
unArray(Arr);
//console.log(unArray(Arr));
第二種方法是在Arr數(shù)組里檢測(cè)暑脆,Arr.indexOf(Arr[i])返回某一項(xiàng)在Arr數(shù)組里第一次出現(xiàn)的位置,如果第一次出現(xiàn)就push到newArr數(shù)組去狐肢,如果第二次出現(xiàn)添吗,則什么都不操作。
第三種方法:
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表里沒(méi)有第i項(xiàng)則
hash[Arr[i]] = true;//把第i項(xiàng)插入到hash表里
newArr.push(Arr[i])//把Arr數(shù)組的第i項(xiàng)插入新數(shù)組份名。此方法的時(shí)間消耗長(zhǎng)碟联,內(nèi)存消耗大;
}
};
return newArr;
}
unArray(Arr);
//console.log(unArray(Arr));
第三種是關(guān)于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];//創(chuàng)建一個(gè)新數(shù)組和一個(gè)變量firstArr,并賦值為數(shù)組Arr的第一個(gè)值
for (var i = 0; i < Arr.length; i++) {
if (Arr[i] !== firstArr){//如果數(shù)組的第i個(gè)不等于firstArr;
newArr.push(Arr[i]);//把第Arr[i]項(xiàng)插入新數(shù)組newArr
firstArr = Arr[i];//重新設(shè)置變量firstArr為rr[i]普监,也就是剛插入newArr的那一項(xiàng)
}
};
return newArr;//返回新數(shù)組newArr
}
unArray(Arr);
// console.log(unArray(Arr));
此方法還的謝謝二樓。