JavaScript中数组去重汇总
1. 简单的去重方法,利用数组的indexOf下标属性来查询
/* * 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中 * IE8以下不支持数组的indexOf方法 * */ function newArr(nArr) {var arr = [];for(var i = 0; i < nArr.length; i++){if(arr.indexOf(nArr[i]) === -1){arr.push(nArr[i]);}}return arr; }
2. 利用双层for循环来判断
/* * 定义一个新数组,并存放原数组的第一个元素, * 然后将原数组和新数组一一对比,如果不同则存放新数组中。 * */ function unique(arr) {let res = [arr[0]];for(let i = 1; i < arr.length; i++){let repeat = false;for(let j = 0; j < res.length; j++){if(arr[i] === res[j]){repeat = true;break;}}if(!repeat){console.log(arr[i]);res.push(arr[i]);}}return res; }
3 利用数组原型对象上的includes方法。(ES6新增的)
function uniques(arr) {let res = [];for(let i = 0; i < arr.length; i++){if(!res.includes(arr[i])){res.push(arr[i]);}}return res; }
备注: 传统上只有indexOf一个方法,来判断一个字符串是否包含在另一个字符串当中,ES6后来新增三个方法:
a. includes(string, n) 返回 布尔值,表示是否找到了参数字符串。
b. startsWith(string, n) 返回布尔值,表示参数字符串是否在原字符串的头部
c. endsWith(string, n) 返回布尔值,表示参数字符串是否在原字符串的尾部。
上面代码表示,使用第二个参数n时,endsWith的行为与其他两个方法有所不同。它针对前n个字符,而其他两个方法针对从第n个位置直到字符串结束。
4. 利用数组原型对象上的 filter 和 includes方法
function uniques(arr) {let res = [];res = arr.filter(function (item) {return res.includes(item) ? "" : res.push(item);});return res; }
5. 利用Set数据结构和数组符号"..."来判断 或者利用 Array.from()来转换
function uniques1(arr) {return [...new Set(arr)]; }function uniques2(arr) {return Array.from(new Set(arr)); }
备注: Array.from()方法就是将一个类数组对象或者可遍历对象转换成一个真正的数组。
6. 利用对象属性存在的特性,如果没有该属性则存入新数组。
function uniques(arr) {let res = [];let obj = {};for(let i = 0; i < arr.length; i++){if(!obj[arr[i]]){obj[arr[i]] = 1;res.push(arr[i]);}}return res; }
转载于:https://www.cnblogs.com/yyy6/p/9442983.html
JavaScript中数组去重汇总相关推荐
- Javascript中数组去重的六种方法
数组去重 第一种方法: 先对数组进行排序sort(),排好序,然后把数组的当前项和后一项进行比较,相同则使用数组的splice(相同的位置,1),但是为了防止数组塌陷,每次删除数组元素的时候要把i的值 ...
- JavaScript中数组去重的几种方法整理
本人菜鸡,前两天去面试,发现再次碰到数组去重这道面试题,比较常见.能够达到去重效果的方法有好几个,感觉有必要整理一下其中几种常见实现: 1,思路:创建一个空数组,然后循环需要去重的数组,对比创建的数组 ...
- Python JavaScript 的数组去重
"数组去重" 是实际应用中常用的操作,出现在面试题中的概率也很高,今天简述一下 Python 和 JavaScript 中数组去重的方法 python数组去重 >>&g ...
- JavaScript中数组使用总结
一. 数组的概念 1.1 什么是数组 数组是指的数据的有序列表. 数组中每个值称之为数组的一个元素. 数组中的每个元素都有一个位置,这个位置称之为索引(下标.index).数组的索引是从 0 开始的 ...
- java中字符串和数组如何比较_[Java教程]javascript中数组和字符串的方法比较
[Java教程]javascript中数组和字符串的方法比较 0 2016-07-19 23:00:05 ×目录[1]可索引 [2]转换 [3]拼接[4]创建[5]位置 前面的话 字符串和数组有很多的 ...
- [乐意黎原创] JavaScript中数组使用总结
原文地址:http://blog.csdn.net/u012468376/article/details/53147098 一. 数组的概念 1.1 什么是数组 数组是指的数据的有序列表. 数组中每个 ...
- php中不让数组初始化,javascript中数组与php数组初始化差异
准确来说,javascript中我们需要称之为数组对象,因为数组就是对象,不信你看: var a=[1,2,3]; //竟然会弹出object alert(typeof(a)); 之前学习php的时候 ...
- Js中数组去重的几种方法
前几天在看前端面试题的时候,其中js部分有个问题是实现数组去重的算法,一开始就想了一两种方法,后来仔细回忆了下这个题,觉得该问题实现方法确实不止局限于一两种方法 ,从不同的角度去看待该问题就会有多种实 ...
- JavaScript中数组slice和splice的对比小结
前言 今天重温了一下Javascript,看到了数组的方法,其中有两个比较相似的方法--splice和splice,看着很像,就是多了一个p,但是用法却相当不一样. 在使用中,可以通过选择一个具有强语 ...
最新文章
- logstash tcp multihost output(多目标主机输出,保证TCP输出链路的稳定性)
- python编程小游戏代码-Python小游戏之300行代码实现俄罗斯方块
- nyoj-20--吝啬的国度-DFS+vector
- 转帖不会乱码的,powershell网络蜘蛛
- 深度学习(八)caffe源码学习-未完待续
- Kaggle 数据清洗挑战 Day 1 - 手把手教你五步处理缺失值
- web自动化框架抽取示例【Java+selenium】
- Apache Server搭建独立图片服务器
- Mysql中索引的 创建,查看,删除,修改
- 计算机网络nos是什么意思,什么是网络操作系统(NOS)
- [Verilog]半减器,全减器设计
- Squid在Windows平台搭建代理服务器
- 苹果保修期多久_识别苹果二手机
- http前后端传参写法
- 驱动辅助资料(工具,目录,指令,debug经验)
- 独孤思维:没有复盘的项目,不会赚钱
- JQuery入门级-基础
- word论文排版插件_有了这3个Word插件,各种Word难题都能迎刃而解!
- Mysql偶尔连接失败的问题
- 【论文阅读】GaitSet: Regarding Gait as a Set for Cross-View Gait Recognition