1.通过indexOf查找数组下标的方式去重,如果返回值等于负一,则证明新数组中没有这个数,添加进来。
var arr1 = [1, 2, 33, 2, 2, 1, 1, 4, 4];
var arr2 = ['a','b','b','c','c','s','s','d','f','d'];
function array(arr) {
var newArr = [];//存储去重后的新数组
for (var i = 0; i < arr1.length; i++) {
var v = arr[i] //遍历数组
if (newArr.indexOf(v) === -1) {
newArr.push(v);
}
}
return newArr;
}
console.log(array(arr1));
console.log(array(arr2));
2、通过双重for循环和splice方法来去重,从第一项开始依次和后面比较,如果为true,则删除后面那一项,最终达到数组去重的目的
var arr1 = [1, 2, 33, 2, 2, 1, 1, 4, 4];
var arr2 = ['a','b','b','c','c','s','s','d','f','d'];
function array(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
}
console.log(array(arr1));
console.log(array(arr2));
3、filter去重,通过返回过滤的为true的项组成新数组,因为indexOf默认查找第一个数字的下标,后面位置的相同的数字下标都不可能和第一个数字下标相同,所以不可能返回相同的数字或者字母
var arr1 = [1, 2, 33, 2, 2, 1, 1, 4, 4];
var arr2 = ['a', 'b', 'b', 'c', 'c', 's', 's', 'd', 'f', 'd'];
function array(arr) {
var s = arr.filter(function (item, index, array) {
return array.indexOf(item) === index;
})
return s
}
console.log(array(arr1));
console.log(array(arr2));