常用的js数组去重的方法

  • 1. 使用for循环去重
  • 2.使用set对象去重
  • 3.使用数组索引indexOf()方法搭配for循环去重
  • 4.使用includes()方法搭配for循环去重
  • 5.使用fiflter()方法搭配indexOf()方法去重
  • 6.数组对象去重

在我们日常的开发中,数组的去重有很多种方法,目前的一些插件也提供了一些方法,下面简单介绍一下几种常见的手写js去重方法

1. 使用for循环去重

最简单的思路,使用两for循环嵌套,拿当前元素跟数组中的下一个元素作比对,当前元素等于做比对的元素时使用splice()方法删除相同元素,对应的数组下标减1使元素向前移动一位。

//  数组对象去重
let arr = [{id:1,code:2},{id:1,code:3},{id:1,code:4},{id:2,code:2}]
for(let i = 0; i < arr.length; i++){  //数据去重for(let j = i+1; j < arr.length; j++){if( arr[i].id==arr[j].id){arr.splice(j,1);j--        } }}//数组去重
let arr = [1,2,3,4,1]
for(let i = 0; i < arr.length; i++){  //数据去重for(let j = i+1; j < arr.length; j++){if( arr[i]==arr[j]){arr.splice(j,1);j-- } }}

2.使用set对象去重

使用es6的set对象进行去重是较为方便的一种方式。Set跟数组类似,但是成员都是唯一的值。思路:初始化一个Set对象,然后再将其转化为数组即可去除数组中重复的元素。

let arr = [1,2,3,1,2,3,4,6,33,11,33,11]
let set = new Set(arr)
let newArr = [...set];
console.log(newArr)

3.使用数组索引indexOf()方法搭配for循环去重

使用数组的indexOf()方法能检索数组的索引,当索引为-1时代表元素不在原数组,>思路:定义一个新数组,遍历原数组,新数组使用indexOf()方法检索,当值返回-1时就push进去新数组

let arr = [1,2,3,1,2,3,4,6,33,11,33,11]
for(let i =0; i < arr.length; i++){let newArr = []if(newArr.indexOf(arr[i]) == -1){newArr.push(arr[i])}}

4.使用includes()方法搭配for循环去重

使用数组的include()方法能判断元素是否存在数组里面,存在时返回true,否则返回false,>思路:思路等同于方法3,定义一个新数组,遍历原数组,新数组使用includes()方法做判断,当值返回FALSE时就push进去新数组

let arr = [1,2,3,1,2,3,4,6,33,11,33,11]
for(let i =0; i < arr.length; i++){let newArr = []if(!newArr.includes(arr[i])){//取反为true时push进新数组 newArr.push(arr[i])}}//简化let newArr = []
arr.map(item=>{if(!newArr.includes(item)){newArr.push(arr[i]) }
})

5.使用fiflter()方法搭配indexOf()方法去重

使用fiflter()方法能检索每一个元素,回调的第一个元素item为当前元素,第二个元素index为当前元素的索引。>思路:indexOf 只能查找到第一个 ,当indexOf方法检索到的索引等于当前元素索引时返回当前元素,否则过滤掉

let arr =['aa', 1,2,3,1,2,3,'aa']
let newArr = arr.filter((item,index)=>{return arr.indexOf(item) === index;})

6.数组对象去重

使用reduce方法去重。
思路:传建一个空对象,使用reduce遍历数组对象,判断当前元素是否在当前数组对象,不存在即push进去

let arr = [{id:1,code:2},{id:1,code:3},{id:1,code:4},{id:2,code:2}]
const removeDuplicateObj = (arr) => {
let obj = {};
arr = arr.reduce((newArr, next) => {   obj[next.id] ? '' : (obj[next.id] = true && newArr.push(next)); return newArr; }, []);return arr;};
console.log(removeDuplicateObj(arr));

常用的js数组去重的方法相关推荐

  1. js数组去重的方法:

    js数组去重:项目中需求是选择一些数据,但是不能重复出现同样的数据,这里就要用到JS数组去重,以下几种数组去重方法简单实用哦! 方法一:利用数组的indexOf方法去重 需求: 利用indexOf判断 ...

  2. js 数组去重的方法大全

    1.使用双重for循环,再利用数组的splice方法去重(ES5常用) let arr = [1, 5, 6, 0, 7, 3, 0, 5, 9, 5]; function unique(arr) { ...

  3. 两种常用的js数组转字符串方法

    一.toString() js中的toStrig()方法能把数组转换为字符串,并且元素之间用 ',' 隔开 例如: let arr =['喵喵','火花','水蓝蓝']let str=arr.toSt ...

  4. JS数组去重 ES6 方法

    let arr = [0, 0, 0, 0, 1, 2, 3, 4, 4, 5, 2, 3, 3, 3, 9, 8, 9]; //数组去重法1 console.log(Array.from(new S ...

  5. JS数组去重方法小结

    JS数组去重 看了网上很多数组去重方法,用的比较常见的大概就几种,今天想自己来做一个总结. 部分内容参考该博客 1 . 在原数组上操作(基本方法) 思路:利用循环嵌套,判断数组中每个元素与其后面的元素 ...

  6. JS数组去重及表格操作行数据方法总结

    数组去重 一.利用ES6 Set去重(ES6中最常用) function unique (arr) {return Array.from(new Set(arr)) } var arr = [1,1, ...

  7. JS数组去重方法记录

    js数组去重方法 1.遍历数组,建立新数组,利用indexOf判断是否存在于新数组中,不存在则push到新数组,最后返回新数组 代码如下(示 例): function getArray(ar) {va ...

  8. html怎么创建数组,js创建数组的三种方法 JS数组去重的几种常见方法

    JS数组有哪几种定义方式? js 里创建一个数组 那几种方式有什么区别吗?a = new Array(); b = []; 性能问题吗?? function clear(arr) { // 1 如何获 ...

  9. js数组去重(多种方法)

    1 // js数组去重 2 Array.prototype.fun1 = function(){ 3 var arr = this, 4 result = [], 5 i, 6 len = arr.l ...

最新文章

  1. 美酒换咖啡用java编写_Java 配 Shell 等于美酒加咖啡
  2. 【盘点2018】社交领域投融资报告来了!
  3. VTK:Utilities之CommandSubclass
  4. 统计学习方法-第二章课后习题答案整理
  5. java调用指定浏览器_Java调用浏览器打开网页完整实例
  6. 正确退出activity_如何退出Activity
  7. 基克的聚合 机器人_重做秒变神器!基克的聚合成辅助标配
  8. ppap文件过程流程图制作_收藏 | 据说PPAP的精华都在这个PPT里!一起来鉴定下
  9. 四则运算 结对项目
  10. Xmind快捷键笔记
  11. [leetcode ]221. Maximal Square c语言
  12. 1.编写一个程序,它从标准输入读取C源代码,并验证所有的花括号都正确的成对出现。
  13. 11210怎么等于24_巧算24点
  14. 计算机主板内存设计规范,PC 新时代!DDR5 内存规范正式发布
  15. c语言错误c1083是什么意思,fatal error C1083: Cannot open include file: 'stdafx.h': No such file or directo...
  16. 如何打印复印试卷,试卷打印复印去哪里方便
  17. linux查看nbu数据库命令,NBU基本常用命令
  18. imageView图片放大缩小及旋转
  19. JAVA实现简单超市收银系统、控制台输入
  20. 投资者可以自己对接股票交易接口吗?

热门文章

  1. el-popover 位置问题,第一次点击位置乱飘,第二次点击恢复正常
  2. php 正则 规则,PHP 正则表达式的语法规则
  3. 【老爸语录】2021年4月11日
  4. 彻底关闭苹果系统更新_强迫症福利!终于可以关闭iPhone手机系统更新
  5. Kaggle PUBG吃鸡数据集--数据分析可视化PUBG数据集分析报告
  6. 计算机编程艺术是谁写的,《计算机编程的艺术》与想象力编程
  7. JAVA语言Integer转换为byte
  8. 游戏开发 应用Docker实现开发环境
  9. QQ机器人开放式服务框架 Version 0.1 Draft - 测试用QQ机器人介绍
  10. GHOST 未发现作用分区 请恢复镜像后激活第一分区