美文网首页
四种方法实现数组去重

四种方法实现数组去重

作者: Marshall3572 | 来源:发表于2021-04-15 12:19 被阅读0次

数组去重一般来说就这么几种方法,理解代码,记住就好!Map、Set、reduce、filter~
map实现

const arr = [3, 1, 1, 2, 5, 9, 3, 0]
const deduplication1 = arr => {
  let map = new Map()
  arr.forEach(v => map.set(v, 1))
  return [...map.keys()]
};
console.log(deduplication1(arr));

set实现

const arr = [3, 1, 1, 2, 5, 9, 3, 0]
const deduplication1 = arr => {
  let map = new Map()
  arr.forEach(v => map.set(v, 1))
  return [...map.keys()]
};
console.log(deduplication1(arr));

reduce实现(⭐)

const arr = [3, 1, 1, 2, 5, 9, 3, 0]
const deduplication3 = arr => arr.reduce((temp, v) => temp.includes(v) ? temp : [...temp, v], [])
console.log(deduplication3(arr))

filter过滤实现

const arr = [3, 1, 1, 2, 5, 9, 3, 0]
const deduplication4 = arr => arr.filter((val, index) => arr.indexOf(val) === index)
console.log(deduplication4(arr))

上边四种方法都是创建了新的数组来去重,下边这种方法实现了在原数组上去重。

let arr = [3, 0, 0, 1, 1, 2, 3, 3, 3, 5, 5]

function deduplication(arr) {
  let hash = {}
  for(let i=0; i<arr.length; i++) {
    if(!hash[arr[i]]) {
      hash[arr[i]] = 1
    } else {
      arr.splice(i, 1)
      i--
    }
  }
  return arr
}

let arr2 = deduplication(arr)
console.log(arr2)
console.log(arr)
console.log(arr === arr2)

相关文章

  • Array集结号

    实现数组去重的几种方法 数组去重一 数组去重二 利用数组indexof+push实现数组去重 数组去重三 利用对象...

  • JS实现数组去重常用的六种方法

    双重for循环去重 includes实现数组去重 indexOf实现数组去重 利用set方法去重 ES6 Arra...

  • 常见数组操作方法(容易混乱)

    filter方法巧妙实现数组去重

  • 四种方法实现数组去重

    数组去重一般来说就这么几种方法,理解代码,记住就好!Map、Set、reduce、filter~map实现 set...

  • ES6数组去重

    普通数组去重 方法1 方法2 对象数组去重

  • JS数组去重常见方法分析

    数组去重是开发中经常会遇到的问题,也是面试时经常会考到的。JS实现数组去重可以有多种方法: 一、简单的去重方法 用...

  • js数组去重的N种方法

    对于数组去重我们有n种方法可以实现。 es5实现方法for循环+indexOf function unique(...

  • js数组去重、对象数组去重

    普通数组去重 一、普通数组去重 方法一:遍历数组法 方法二:排序法 方法三:对象法 对象数组去重 方法一:将对象数...

  • iOS面试题整理

    1、数组去重的方法: (1)原来集合操作可以通过valueForKeyPath来实现的,去重可以一行代码实现(顺序...

  • js中数组去重的三种方法

    数组去重的三种方法: 1、 利用es6中 set类型实现数组去重。 2、 新建一个空数组,然后循环之前的数组,判断...

网友评论

      本文标题:四种方法实现数组去重

      本文链接:https://www.haomeiwen.com/subject/gesllltx.html