JS数组去重方法小结
JS数组去重
看了网上很多数组去重方法,用的比较常见的大概就几种,今天想自己来做一个总结。
部分内容参考该博客
1 . 在原数组上操作(基本方法)
思路:利用循环嵌套,判断数组中每个元素与其后面的元素是否相等,如果相等,就使用splice方法删掉后面的元素,注意j--。
function dedupe2(arr) {for (var i = 0; i < arr.length; i++) {for (var j = i + 1; j < arr.length; j++) {if (arr[i] == arr[j]) {arr.splice(j, 1);j--;}}}return arr;
}
2 . 数组去重后返回一个新数组
思路:新建一个数组,遍历需要去重的数组,使用indexOf判断新数组中是否包含之前数组中每一项,不包含就push进去。
function dedupe1(arr) {var newarr = [];for (var i = 0; i < arr.length; i++) {if (newarr.indexOf(arr[i]) == -1) {newarr.push(arr[i]);}}return newarr;
}
3 . 利用对象的属性去重
思路:每次从数组中取出一个元素,到对象中去访问这个属性,如果能访问到就说明重复。
function dedupe3(arr) {var newarr = [];var obj = {};for (var i = 0; i < arr.length; i++) {if (!obj[arr[i]]) {newarr.push(arr[i]);obj[arr[i]] = 1;}}return newarr;
}
4 . 利用ES6中的Set数据结构和扩展运算符(参考ES6标准入门)
[...new Set([array])];
5 . 还是利用ES6中的Set
function dedupe4(arr) {return Array.from(new Set(arr));
}
当然,数组去重的方法还有很多很多很多,例如常用的先排序后去重,但是我看了一些帖子,发现其中存在一些问题,排序时是用到了sort方法,但是并没有给sort方法一个正确的排序函数,默认情况下sort方法比较的是字符串,因此会出现一些问题。还有就是sort方法返回的数组也是排序后的数组,某些情况下可能不符合要求。
以上只是个人的一个小总结,代码都是经过测试后的,有问题请指正,也欢迎大家补充,谢谢。
JS数组去重方法小结相关推荐
- JS数组去重方法记录
js数组去重方法 1.遍历数组,建立新数组,利用indexOf判断是否存在于新数组中,不存在则push到新数组,最后返回新数组 代码如下(示 例): function getArray(ar) {va ...
- js数组去重方法分析与总结
数组去重经常被人拿来说事,虽然在工作中不常用,但他能够很好的考察js基础知识掌握的深度和广度,下面从js的不同阶段总结一下去重的方法. ES3阶段 该阶段主要通过循环遍历数组从而达到去重的目的 多次循 ...
- android 数组排重方法,js数组去重方法集合 - osc_779ncf3o的个人空间 - OSCHINA - 中文开源技术交流社区...
//第一种方法,新建一个空数组,将原来的数组循环逐个与新数组的成员做比较,如果新数组没有该元素就push进来 var arr = ['a', 1, 1, 1, 2, 4, 4, 'b', 'c', ' ...
- 常用的js数组去重的方法
常用的js数组去重的方法 1. 使用for循环去重 2.使用set对象去重 3.使用数组索引indexOf()方法搭配for循环去重 4.使用includes()方法搭配for循环去重 5.使用fif ...
- js数组去重的方法:
js数组去重:项目中需求是选择一些数据,但是不能重复出现同样的数据,这里就要用到JS数组去重,以下几种数组去重方法简单实用哦! 方法一:利用数组的indexOf方法去重 需求: 利用indexOf判断 ...
- html怎么创建数组,js创建数组的三种方法 JS数组去重的几种常见方法
JS数组有哪几种定义方式? js 里创建一个数组 那几种方式有什么区别吗?a = new Array(); b = []; 性能问题吗?? function clear(arr) { // 1 如何获 ...
- js数组去重(多种方法)
1 // js数组去重 2 Array.prototype.fun1 = function(){ 3 var arr = this, 4 result = [], 5 i, 6 len = arr.l ...
- JS数组去重的6种算法实现
1.遍历数组法 最简单的去重方法,实现思路:新建一新数组,遍历传入数组,值不在新数组就加入该新数组中:注意点:判断值是否在数组的方法"indexOf"是ECMAScript5 方法 ...
- JS数组去重算法实现
1.遍历数组法 最简单的去重方法, 实现思路:新建一新数组,遍历传入数组,值不在新数组就加入该新数组中:注意点:判断值是否在数组的方法"indexOf"是ECMAScript5 方 ...
最新文章
- JS中的!= 、== 、!==、===的用法和区别
- 去掉excel保存文件时自动生成备份
- 页面生命周期:DOMContentLoaded, load, beforeunload, unload
- 多线程断点续传下载软件-闪电下载2009
- oracle备份与恢复--闪回技术
- matlab中的:的优先级_内容早期设计:内容优先
- 募捐名单_年度捐款,以及为什么现在应该捐款,而不是以后
- python中msg是什么意思,使用python解析Outlook .msg文件
- 【Python】极简单的方式序列化sqlalchemy结果集为JSON
- 通过拦截器获取控制类requestMapping注解中的属性值
- 6-3 二叉搜索树中的最近公共祖先 (25 分)
- Element-ui中table使用row-class-name无效的锅
- 【手写数字识别】基于matlab GUI BP神经网络手写数字识别系统【含Matlab源码 1639期】
- 【MySQL联合查询】内连接查询详解
- unity3d的下载与安装
- 交易系统开发(二)——行情数据
- 乔春洋:品牌文化的三大内涵
- java中OOP的概念之我见
- 【云原生之Docker实战】使用Docker部署Snipe-It固定资产管理平台
- flutter 高效计算时间差
热门文章
- JAVA中利用DOM解析XML文档
- 【感想文】感情经历,是否给你我带来的些许提升?我想,有。
- memcached的认识
- MVC架构中的Repository模式 个人理解
- python学习笔记-day2-dict,tuple, string常用函数
- 模拟器genymotion的安装与配置
- 《学习Opencv》第五章 习题6
- .net ListT
- RFC3261(5 协议结构)
- 关于datediff(year,开始日期,结束日期)中year格式的说明,特别注意year两边不能加引号,否则报错...