JavaScript 去重总结
来源:互联网 发布:虎鲨软件站 编辑:程序博客网 时间:2024/05/10 22:31
在写代码时候常常会遇到数组去重,方法也学了不少,自己总结一下:
以数组arr=[6,7,8,8,9,8,7,6,5]为例
1.双重循环
最直接最暴力的办法,当然也是最明了的办法,缺点自然就是太粗糙太笨重
eg.
function removeRep(arr){ var newArr=[]; var len=arr.length; for (var i = 0; i < len; i++) { for (var j = i+ 1; j<len; j++) { if (arr[i]===arr[j]) { j=++i;//遇到相同值,跳过;j=++i等同于j,i各加1 } } newArr.push(arr[i]); } return newArr;}var arr=[6,7,8,8,9,8,7,6,5];removeRep(arr);[9, 8, 7, 6, 5]
方法的思路就是逐项对比,遇到相同值就不加入到新数组里;
- 利用 Array.prototype.indexOf()
实现原理就是假如该项在数组中不是第一次出现,则排除之;
有两种写法:
eg.
function removeRep(arr) { var newArr=[]; arr.forEach(function(item){ if (newArr.indexOf(item)===-1) { newArr.push(item); } }); return newArr;}var arr=[6,7,8,8,9,8,7,6,5];removeRep(arr);[6, 7, 8, 9, 5]
另一种写法:
function removeRep(arr) { return arr.filter(function(item, index){ return arr.indexOf(item) === index; });}var arr=[6,7,8,8,9,8,7,6,5];removeRep(arr);[6, 7, 8, 9, 5]
3.es6的方法
es6里新增的set、includes等办法对数组去重也非常有用
a. 利用set对象
set是es6里的一个新对象,类似于数组,并且其内部所有值都是唯一的,不可重复,利用这一点就可以进行去重:
eg.
function removeRep(arr){ var set = new Set(arr); return Array.from(set);//利用Array.from把对象再转化为数组}var arr=[6,7,8,8,9,8,7,6,5];removeRep(arr);[6, 7, 8, 9, 5]
b.利用Array.prototype.includes()方法;
includes是一个新增的数组方法,判断该数组是否包含某个特定值,返回值为布尔值(True/False);
详见 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/includes
eg.
function removeRep(arr) { var newArr = []; arr.forEach(function(item){ if(!newArr.includes(item)){ newArr.push(item); } }); return newArr;}var arr=[6,7,8,8,9,8,7,6,5];removeRep(arr);[6, 7, 8, 9, 5]
c.利用map()对象
这种方法其实自己没有用过,只是看到有这种写法;
map对象保存键值对。任何值(对象或者[原始值] 都可以作为一个键或一个值。详见https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Map
实现思路和上面差不多,如果没有则加入新数组,有则排除
eg.
function removeRep(arr) { var newArr = []; var len = arr.length; var tmp = new Map(); for(var i=0; i<len; i++){ if(!tmp.get(arr[i])){ tmp.set(arr[i], 1);//设置Map对象中键的值。返回该Map对象。 newArr.push(arr[i]); } } return newArr;}var arr=[6,7,8,8,9,8,7,6,5];removeRep(arr);[6, 7, 8, 9, 5]
暂时想到这么多方法…………
阅读全文
0 0
- JavaScript 去重总结
- javascript数组去重方法终极总结
- javascript数组去重
- javascript 数组去重
- javascript 数组去重
- 数组去重javascript
- javascript数组去重
- JavaScript数组去重
- JavaScript数组去重
- javascript数组去重
- JavaScript 数组去重
- javascript数组去重
- JavaScript 数组去重
- javascript 数组去重
- javascript数组去重
- JavaScript数组去重
- javascript-->>去重
- javascript 数组去重
- 【NOI题解】 3.2数据结构之指针和链表
- gsl库安装失败
- 代码质量
- myeclipse数据库逆向hibernate教程
- expect 脚本
- JavaScript 去重总结
- Esp8266进阶之路12 图文并茂学习阿里云主机搭建8266MQTT服务器,实现移动网络远程控制一盏灯!
- Kindeditor实现图片上传
- 监督学习
- 简析vector
- 数据结构实验之查找一:二叉排序树
- vue.js脚手架vue-cli的搭建
- 项目——简易计算器
- 4580: [Usaco2016 Open]248