数组去重的几种方法
栏目: 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))
}
欢迎转载,转载需带着文章出处链接~~
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
网站运维技术与实践
饶琛琳 / 电子工业出版社 / 2014-3 / 69.00元
网站运维工作,一向以内容繁杂、覆盖面广著称。《网站运维技术与实践》选取日常工作涉及的监测调优、日志分析、集群规划、自动化部署、存储和数据库等方面,力图深入阐述各项工作的技术要点及协议原理,并介绍相关开源产品的实践经验。在技术之外,作者也分享了一些关于高效工作及个人成长方面的心得。 《网站运维技术与实践》适合Linux 系统管理员、中大型网站运维工程师及技术负责人、DevOps 爱好者阅读。同......一起来看看 《网站运维技术与实践》 这本书的介绍吧!