数组去重

数组项为简单类型

一、利用ES6 Set去重(ES6中最常用)

var arr = [1,1,8,8,12,12,15,15,16,16];
function unique (arr) {
  return Array.from(new Set(arr))
}

console.log(unique(arr))
 //[1,8,12,15,16]

二、利用indexOf去重

var arr = [1, 1, 8, 8, 12, 12, 15, 15, 16, 16];
function unlink(arr) {
    if (!Array.isArray(arr)) {
        console.log('错误!')
        return
    }
    var array = [];
    for (var i = 0; i < arr.length; i++) {    // 首次遍历数组
        if (array.indexOf(arr[i]) === -1) {   // 判断索引有没有等于
            array.push(arr[i])
        }
    }
    return array
}
console.log(unlink(arr));

数组项为复杂类型

一、

function unique(arr) {
  let obj = {}
  return arr.filter((item, index) => {
     // 防止key重复
     let newItem = item + JSON.stringify(item)
     return obj.hasOwnProperty(newItem) ? false : obj[newItem] = true
  })
}

二、

      var result = []
      var obj = {}
      for (var i = 0; i < arr.length; i++) {
        if (!obj[arr[i].id]) {
          result.push(arr[i])
          obj[arr[i].id] = true
        }
      }
      arr = result
posted @ 2020-09-27 13:25  black_Crocodile  阅读(175)  评论(0)    收藏  举报