这里总结集中数组去重的方法:自己动手敲一敲,精神一整天!
1.第一种方法:(我经常用的,好理解)
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;
};
利用对数组的进行双重遍历,对数组的位置的数值进行比较,删除相同的元素,返回去重之后的数组!
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的特性,进行操作!
3.第三种方法
function arrAlong(arr) {
var ret = [];
arr.forEach(function(e, i, arr) {
if (arr.indexOf(e) === i) {
ret.push(e);
}
});
return ret;
}
数组下标判断法, 遍历数组,利用indexOf判断元素的返回值是否与当前索引相等,如相等则加入
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;
}
遍历数组,利用object对象保存数组值,判断数组值是否已经保存在object中,未保存则push到新数组并用object[arrayItem]=1的方式记录保存