方法1:
两层for循环,判断第一层和第二层的元素是否相同,相同就删除元素splice(开始位置,1),0代表添加
let arr = ['a', 'b', 'c', 'qq', 'b', 'qq', 'wx', 1, 2, 1, 2];
console.log(arr);
//两层for循环,判断第一层和第二层的元素是否相同,相同就删除元素splice(开始位置,1),0代表添加
function norepeat(arr) {
for (let i = 0; i < arr.length; i++) {
for (let j = i + 1; j < arr.length; j++) {
if (arr[i] == arr[j]) {//下标相同则删除该值
arr.splice(j, 1);//后面的元素会自动补位,需要比较一次j所在位置的元素,所以需要使j自减
j--;
}
}
}
return arr;
}
console.log(norepeat(arr));
显示结果:
方法2:
es6中的set()方法
es6中的set主要是作用是一是对数组去重, set()将数组去重实例化,二是对数组交集合并、差集
Array.from()方法可以将 Set 结构转为数组,去除数组重复成员的另一种方法
let arr = ['a', 'b', 'c', 'qq', 'b', 'qq', 'wx', 1, 2, 1, 2];
console.log(arr);
let newarr1 = new Set(arr);
console.log(newarr1);
//Array.from()方法可以将 Set 结构转为数组,去除数组重复成员的另一种方法
let newarr2 = Array.from(new Set(arr));
console.log(newarr2);
显示结果:
方法3:
indexof()查找字符串:
将需要去重的数组进行遍历,判断新数组中是否有当前元素,没有就将值添加(push)进新数组中
indexOf()大小写敏感返回值:-1 代表没有找到匹配子串
let arr = ['a', 'b', 'c', 'qq', 'b', 'qq', 'wx', 1, 2, 1, 2];
console.log(arr);
function newArr(arr) {
let newarr4 = []; //新数组
for (let i = 0; i < arr.length; i++) {
if (newarr4.indexOf(arr[i]) == -1) { //判断新数组中是否有当前元素,为-1就是没有该值,最后将值添加(push)进新数组中
newarr4.push(arr[i]);
}
}
return newarr4;
}
console.log(newArr(arr));
显示结果:
方法4:
filter()方法去除重复元素,indexof()查找字符串
filter()方法会创建一个新数组,原数组的
每个元素传入回调函数中,回调函数中有return返回值,若返回值为true,这个元素保存到新数组中;若返回值为false,则该元素不保存到新数组中;原数组不发生改变。
let arr = ['a', 'b', 'c', 'qq', 'b', 'qq', 'wx', 1, 2, 1, 2];
console.log(arr);
let newarr3 = arr.filter(function (ele, index) {
return arr.indexOf(ele) == index;
});
console.log(newarr3);
结果显示:
filter()解析:
扫描二维码关注公众号,回复:
15029504 查看本文章