数组去重的几种方法

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

内容简介:数组去重在日常开发中作中或者是面试中是经常出现的一个问题,结合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))
			}

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


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

查看所有标签

猜你喜欢:

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

Pattern Recognition and Machine Learning

Pattern Recognition and Machine Learning

Christopher Bishop / Springer / 2007-10-1 / USD 94.95

The dramatic growth in practical applications for machine learning over the last ten years has been accompanied by many important developments in the underlying algorithms and techniques. For example,......一起来看看 《Pattern Recognition and Machine Learning》 这本书的介绍吧!

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

在线压缩/解压 JS 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

SHA 加密
SHA 加密

SHA 加密工具