js数组去重

作者 : 开心源码 本文共1189个字,预计阅读时间需要3分钟 发布时间: 2022-05-13 共219人阅读

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. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » js数组去重

发表回复