文章目录
1.使用ES6的SET方法
因为new Set出来不是一个数组形式,所以还要改成数组形式
写法一
var arr = [1, 3, 5, 7, 2, 5, 2, 5, 7, 3, 5, 6, 3, 5, 2, 4, 5, 2, 4, 5, 2, 3, 4, 5, 2, 6, 1, 7];
var newArr = new Set(arr);
console.log([...newArr]);
写法二
var arr = [1, 3, 5, 7, 2, 5, 2, 5, 7, 3, 5, 6, 3, 5, 2, 4, 5, 2, 4, 5, 2, 3, 4, 5, 2, 6, 1, 7];
var newArr = Array.from(new Set(arr));
console.log(newArr);
2.使用双层for循环
原则是i循环和j循环的次数必须不同
写法一
var arr = [1, 3, 5, 7, 2, 5, 2, 5, 7, 3, 5, 6, 3, 5, 2, 4, 5, 2, 4, 5, 2, 3, 4, 5, 2, 6, 1, 7];
for (var i = 1; i < arr.length; i++) {
for (var j = 0; j < i; j++) {
if (arr[i] == arr[j]) {
arr.splice(j, 1);//在第j个元素开始删除,删除1个元素。
i--;
}
}
}
console.log(arr);
写法二
var arr = [1, 3, 5, 7, 2, 5, 2, 5, 7, 3, 5, 6, 3, 5, 2, 4, 5, 2, 4, 5, 2, 3, 4, 5, 2, 6, 1, 7];
for (var i = 1; i < arr.length; i++) {
for (var j = i + 1; j < arr.length; j++) {
if (arr[i] == arr[j]) {
arr.splice(j, 1);
i--;
}
}
}
console.log(arr);
3.查重,若无重复就push进空数组
写法一:arr[i] == array[j]
var arr = [1, 3, 5, 7, 2, 5, 2, 5, 7, 3, 5, 6, 3, 5, 2, 4, 5, 2, 4, 5, 2, 3, 4, 5, 2, 6, 1, 7];
var array = [];
for (var i in arr) {
var repeat = false;
for (var j in array) {
if (arr[i] == array[j]) {
repeat = true;
break;
}
}
if (!repeat) array.push(arr[i]);
}
console.log(array);
写法二:indexOf
var arr = [1, 3, 5, 7, 2, 5, 2, 5, 7, 3, 5, 6, 3, 5, 2, 4, 5, 2, 4, 5, 2, 3, 4, 5, 2, 6, 1, 7];
var array = [];
for (var i in arr) {
if (array.indexOf(arr[i]) === -1) array.push(arr[i]);
}
console.log(array);
写法三:includes
var arr = [1, 3, 5, 7, 2, 5, 2, 5, 7, 3, 5, 6, 3, 5, 2, 4, 5, 2, 4, 5, 2, 3, 4, 5, 2, 6, 1, 7];
var array = [];
for (var i in arr) {
if (!array.includes(arr[i])) {
array.push(arr[i])
}
}
console.log(array);
4.利用对象的唯一性
var arr = [1, 3, 5, 7, 2, 5, 2, 5, 7, 3, 5, 6, 3, 5, 2, 4, 5, 2, 4, 5, 2, 3, 4, 5, 2, 6, 1, 7];
var array = [];
var obj = {};
for (var i in arr) {
if (!obj[arr[i]]) {
array.push(arr[i]);
obj[arr[i]] = 1;
}
}
console.log(array);
5.使用map去重
var arr = [1, 3, 5, 7, 2, 5, 2, 5, 7, 3, 5, 6, 3, 5, 2, 4, 5, 2, 4, 5, 2, 3, 4, 5, 2, 6, 1, 7];
var array = [];
let map = new Map();
for (let i = 0; i < arr.length; i++) {
if (map.has(arr[i])) { // 如果有该key值
map.set(arr[i], true);
} else {
map.set(arr[i], false); // 如果没有该key值
array.push(arr[i]);
}
}
console.log(array);
6.知识点
6.1.Map 原生提供三个遍历器:
keys():返回键名的遍历器。
values():返回键值的遍历器。
entries():返回所有成员的遍历器。
6.2.splice的用法
var arr = [1, 3, 5, 4, 5, 2, 6, 1, 7];
var array = [];
// 用法一:两个参数---删除
array = arr.splice(3, 3); //从第四个元素开始,删除往后三个元素
// 用法二:三个以上参数--修改和增加
array = arr.splice(5, 3, "hello", 'world')
console.log(array); //输出选定元素: [2, 6, 1]
console.log(arr); //输出被修改后的数组:1, 3, 5, 4, 5, 'hello', 'world', 7