1.双层for循环
遇到数组的长度很长时,会非常消耗内存,不适合长的数组
var arr = [1, 3, 4, 2, 3, 4, 5];
function fn(arr) {
if (!Array.isArray(arr)) { //判断是否为数组
alert('type error!')
return
}
var res = [];//存结果
for(var i = 0; i < arr.length; i++){ //循环arr的长度
for(var j = 0; j < res.length; j++){ //循环res的长度
if(arr[i] === res[j]){
break;
}
}
if(res[j] === res.length){
res.push(arr[i])
}
}
return res;
}
fn(arr);
2.indexOf()
使用元素索引值进行去重
var arr = [1, 3, 4, 2, 3, 4, 5];
function fn(arr) {
if (!Array.isArray(arr)) { //判断是否为数组
alert('type error!')
return
}
var res = [];
for (let i = 0; i < arr.length; i++) {
if (res.indexOf(arr[i]) === -1) {
res.push(arr[i]);
}
}
return res;
}
fn(arr);
3.对象属性名不能重复
let arr = [1, 3, 4, 3, 5, 4, 6, 7, 7, 6]
function fn (arr){
let obj = {};
let res = [];
for (let i = 0; i < arr.length; i++) {
if (!obj[arr[i]]) {
obj[arr[i]] = 1;//假设属性值为1
res.push(arr[i]);
}
}
return res;
}
fn(arr);
4.sort()
先将原数组排序,再与相邻的进行比较,若不同则存入新数组
let arr = [1, 3, 4, 3, 5, 4, 6, 7, 7, 6]
function fn (arr){
var oldarr = arr.sort();
var res = [oldarr[0]];
for (let i = 1; i < oldarr.length; i++) {
if (oldarr[i] !== oldarr[i-1]) {
res.push(oldarr[i]);
}
}
return res;
}
fn(arr)