這里總結(jié)集中數(shù)組去重的方法:自己動手敲一敲,精神一整天!
1.第一種方法:(我經(jīng)常用的,好理解)
function arrAlong(arr) {
for (var i = 0; i < arr.length; i++) {
for (var j = i + 1; j < arr.length; j++) {
if (arr[i] == arr[j]) {
arr.splice(j, 1);
j--;
}
}
}
return arr;
};
利用對數(shù)組的進(jìn)行雙重遍歷,對數(shù)組的位置的數(shù)值進(jìn)行比較,刪除相同的元素,返回去重之后的數(shù)組!
2.第二種方法
function arrAlong(arr) {
var ret = [];
for (var i = 0, j = arr.length; i < j; i++) {
if (ret.indexOf(arr[i]) === -1) {
ret.push(arr[i]);
}
}
return ret;
}
利用indexof的特性,進(jìn)行操作!
3.第三種方法
function arrAlong(arr) {
var ret = [];
arr.forEach(function(e, i, arr) {
if (arr.indexOf(e) === i) {
ret.push(e);
}
});
return ret;
}
數(shù)組下標(biāo)判斷法, 遍歷數(shù)組,利用indexOf判斷元素的返回值是否與當(dāng)前索引相等,如相等則加入
4.第四中方法
function arrAlong(arr) {
var tmp = {},
ret = [];
for (var i = 0, j = arr.length; i < j; i++) {
if (!tmp[arr[i]]) {
tmp[arr[i]] = 1;
ret.push(arr[i]);
}
}
return ret;
}
遍歷數(shù)組,利用object對象保存數(shù)組值,判斷數(shù)組值是否已經(jīng)保存在object中,未保存則push到新數(shù)組并用object[arrayItem]=1的方式記錄保存