数组去重的几种方法

栏目: JavaScript · 发布时间: 5年前

内容简介:数组去重在日常开发中作中或者是面试中是经常出现的一个问题,结合es6可以有很多种方法实现

数组去重在日常开发中作中或者是面试中是经常出现的一个问题,结合es6可以有很多种方法实现

1 思路:将数组第一项放到一个新数组中,然后将原数组的每一项与新数组做对比,若无相同值,则将此数据放到新数组中,最后返回新数组

			function unique1(arr){
				let newArr=[arr[0]]
				for (let i=1;i<arr.length;i++) {
					let isRepeat=false;
					for (let j=0;j<newArr.length;j++) {
						if (newArr[j]==arr[i]) {
							isRepeat=true;
							break;
						}
					}
					if (!isRepeat) {
						newArr.push(arr[i])
					}
				}
				return newArr
			}

2 思路:将原数组排序,然后与新数组的相邻项比较

			function unique2(arr){
				let arrSort=arr.sort()
				let newArr=[arrSort[0]]
				for (let i=1;i<arrSort.length;i++) {
					if (newArr[newArr.length-1]!==arrSort[i]) {
						newArr.push(arrSort[i])
					}
				}
				return newArr
			}

3 思路:利用数组的indexof(),在新数组里面遍历目标数组的每一项,若没有则将此项添加到新数组中

			function unique3(arr){
				let newArr=[]
				for (let i=0;i<arr.length;i++) {
					if (newArr.indexOf(arr[i])===-1) {
						newArr.push(arr[i])
					}
				}
				return newArr
			}

4 思路:利用数组方法includes(),判断新数组是否包含,若没有则添加到新数组中

			function unique4(arr){
				let newArr=[]
				for (let i=0;i<arr.length;i++) {
					if (!newArr.includes(arr[i])) {
						newArr.push(arr[i])
					}
				}
				return newArr
			}

5 思路:利用数组的filter()和includes()

			function unique5(arr){
				let newArr=[]
				return newArr=arr.filter((item)=>{
					return newArr.includes(item)?'':newArr.push(item)
				})
			}

6 思路:用数组的forEach()和includes()

			function unique6(arr){
				let newArr=[]
				arr.forEach((item)=>{
					newArr.includes(item)?'':newArr.push(item)
				})
				return newArr
			}

7 思路:利用数组的lastIndexOf()方法

			function unique7(arr){
				let newArr=[]
				for (let i=0;i<arr.length;i++) {
					if (newArr.lastIndexOf(arr[i])===-1) {
						newArr.push(arr[i])
					}
				}
				return newArr
			}

8 思路:利用数组的from和set方法

			function unique8(arr){
				return Array.from(new Set(arr))
			}

欢迎转载,转载需带着文章出处链接~~


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

深入理解Java虚拟机(第2版)

深入理解Java虚拟机(第2版)

周志明 / 机械工业出版社 / 2013-9-1 / 79.00元

《深入理解Java虚拟机:JVM高级特性与最佳实践(第2版)》内容简介:第1版两年内印刷近10次,4家网上书店的评论近4?000条,98%以上的评论全部为5星级的好评,是整个Java图书领域公认的经典著作和超级畅销书,繁体版在台湾也十分受欢迎。第2版在第1版的基础上做了很大的改进:根据最新的JDK 1.7对全书内容进行了全面的升级和补充;增加了大量处理各种常见JVM问题的技巧和最佳实践;增加了若干......一起来看看 《深入理解Java虚拟机(第2版)》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器