js数组去重

作者: 大海爱奔跑 | 来源:发表于2020-02-24 11:41 被阅读0次

1、准备一个新数组,遍历原数组的每个元素,判断其是否存在于新数组中,将不存在的元素存入新数组。

let arr = [2, 3, 1, 3, 3, 4, 1]
function unique (arr) {
  let res = []
  for (let i = 0; i < arr.length; i++) {
    if (res.indexOf(arr[i]) === -1) {
      res.push(arr[i])
    }
  }
  return res
}
console.log(unique(arr)) // [2, 3, 1, 4]

2、遍历数组,判断每个元素在数组中首次出现的位置下标与当前遍历的下标是否相等,剔除下标不相等的元素,剩下的就是去重数组。

let arr = [2, 3, 1, 3, 3, 4, 1]
function unique (arr) {
  for (let i = 0; i < arr.length; i++) {
    if (arr.indexOf(arr[i]) !== i) {
      arr.splice(i, 1)
      // 下标回退一步
      i--
    }
  }
  return arr
}
console.log(unique(arr)) // [2, 3, 1, 4]

3、利用ES6的set数据结构(类数组,但是值都是唯一的)对数据去重、Array.from将类数组转换成数组。

let arr = [2, 3, 1, 3, 3, 4, 1]
function unique (arr) {
  return Array.from(new Set(arr))
}
console.log(unique(arr)) // [2, 3, 1, 4]

4、利用数组的filter方法,只筛选(保留)当前元素在数组中的真实下标等于当前遍历下标的元素。

let arr = [2, 3, 1, 3, 3, 4, 1]
function unique (arr) {
  return arr.filter((value, index, array) => {
    return array.indexOf(value) === index
  })
}
console.log(unique(arr)) // [2, 3, 1, 4]

5、准备一个新数组,双重循环遍历原数组,判断每个元素是否与它后面的元素重复,不重复,放进新数组,重复,将重复元素的最后一个元素放进新数组。

let arr = [2, 3, 1, 3, 3, 4, 1]
function unique (arr) {
  // 存放去重数组
  let res = []
  for (let i = 0; i < arr.length; i++) {
    // 存放重复元素中最后一个元素的下标
    let repeatIdx = []
    for (let j = i + 1; j < arr.length; j++) {
      if (arr[i] === arr[j]) {
        repeatIdx.push(j)
      }
    }
    // 如果[重复下标数组]长度为0,说明元素arr[i]不重复
    if (!repeatIdx.length) {
      res.push(arr[i])
    }
  }
  return res
}
console.log(unique(arr)) // [2, 3, 1, 4]

相关文章

  • 数组的去重和数组中对象的去重

    数组中对象去重 方式1 jq方式 方式2 原生js方式 普通数组的去重 方式1 普通的数组去重js 方式2 Se...

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

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

  • js数组去重

    Set结构去重 ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。 向 Se...

  • JS数组去重

    方法1:两层for循环,外层循环原数组,内层循环时进行比较。 方法2:利用对象的属性不能相同的特点去重 方法3:利...

  • js数组去重

  • js数组去重

    1.利用对象的属性唯一性去重 2.利用es6的Set

  • js数组去重

  • js 数组去重

  • JS数组去重

    方法一:遍历数组,建立新数组,利用indexOf判断是否存在于新数组中,不存在则push到新数组,最后返回新数组 ...

  • js数组去重

    方法一 (es6 set方法,简单粗暴) 方法二 创建空数组,用indexOf方法检索,没有的话插入新数组中 方...

网友评论

    本文标题:js数组去重

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