for循环去重(push)
function uniq(arr){
var newArr = []
for (var i=0;i<arr.length;i++){
for(var j=i+1;j<arr.length;j++){
if(arr[i] == arr[j]){
i++
j = i
}
}
newArr.push(arr[i])
}
return newArr
}
var a = [1,2,3,4,5,1,2,3,4,5]
console.log(uniq(a))//输出[ 1, 2, 3, 4, 5 ]
for循环去重(splice)
function uniq(arr){
var newArr = arr
for (var i=0;i<newArr.length;i++){
for(var j=i+1;j<newArr.length;j++){
if(newArr[i] == newArr[j]){
newArr.splice(j,1)
j--
}
}
}
return newArr
}
var a = [1,2,3,4,5,1,2,3,4,5]
console.log(uniq(a))//输出[ 1, 2, 3, 4, 5 ]
ES6 Set去重
var a = [1,2,3,4,5,1,2,3,4,5]
let arr = [...new Set(a)]
console.log(arr); // 输出[1, 2, 3, 4, 5]
indexOf去重
function uniq(arr){
var newArr = []
for(var i in arr){
if(newArr.indexOf(arr[i])==-1){//判断新数组是否包含当前元素
newArr.push(arr[i])
}
}
return newArr
}
var a = [1,2,3,4,5,1,2,3,4,5]
console.log(uniq(a)) // 输出[1, 2, 3, 4, 5]
多维数组去重
var temp = []
function uniq(arr){
var newArr = []
recursion(arr) // 调用递归将多维数组变为一维数组再去重
for (var i = 0, len = temp.length;i < len;i ++){
for(var j = i + 1; j < len;j ++){
if (temp[i] === temp[j]) {
i ++
j = i
}
}
newArr.push(temp[i])
}
return newArr
}
//递归函数
function recursion(arr){
for (var i = 0; i < arr.length ;i ++) {
if (typeof arr[i] == 'object') { // 如若数组元素类型是object,则递归
recursion(arr[i])
} else {
temp.push(arr[i]) // 否则添加到temp数组中
}
}
}
var a = [1,[2,3],[3,2,[1,4,[3,5]]]]
console.log(uniq(a))//输出[ 2, 1, 4, 3, 5 ]