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 ]
最后修改:2022 年 05 月 29 日
如果觉得我的文章对你有用,请随意赞赏