javascript数组去重的10种方法
亲爱的小伙伴,对于数组javascript中的数组去重方法你知道多少种呢?学会如何对数组进行去重对于javascript的学习来说也是十分重要的,下边就让我来分享一下我所知道的集中数组去重的方法吧!
1.使用indexOf方法进行数组去重
实现原理:先创建一个新的空数组,然后遍历传递进来的数组,通过indexOf方法判断传入的数组中的元素是否在新创建的数组中已经存在,如果不存在,则将这个元素添加到这个新数组中,最后返回这个新数组
去重代码如下:
function uniqArr(arr) {var newArr = [] //创建一个空数组for (var i = 0; i < arr.length; i++) {//遍历要去重的数组中的元素if (newArr.indexOf(arr[i]) == -1) { //判断数组中的元素是否在新数组中已经存在newArr.push(arr[i])//如果新数组中没有该元素,就将其填充到新数组中}}return newArr //最后返回这个新数组
}
2.使用sort()数组排序api去重
实现原理:先使用sort方法对传入函数的数组进行从小到大排序,然后创建一个新数组,先将排序好的数组的第一个元素添加到新数组中。然后从第二个元素开始遍历排序好的数组,让每个数组元素都和它的前一个元素比较,如果他们的值不相同,则将该元素值添加到新数组中,最终返回这个新数组。
去重代码如下:
function uniqArr(arr) {var sortArr = arr.sort(function (a, b) {return a - b})var newArr = []newArr[0] = sortArr[0]for (var i = 1; i < sortArr.length; i++) {if (sortArr[i] != sortArr[i - 1]) {newArr.push(sortArr[i])}}return newArr}
3.使用splice()方法去重
实现原理:遍历传递进函数的数组,让它和它之后的每一个元素进行比较,如果后边的元素中,有和它的值相等的,就将这个元素通过splice方法删除,然后对应的将数组长度-1,相应下标-1
去重代码如下:
function uniqArr(arr) {var len = arr.lengthfor (var i = 0; i < len; i++) {for (var j = i + 1; j < len; j++) {if (arr[i] == arr[j]) {arr.splice(j, 1)// 修正下标j--len--}}}return arr
}
4.使用lodash的uniqu方法去重
首先得先安装lodash第三方包
npm install lodash --save
然后导入lodash
const _ = require('lodash')
使用lodash对数组进行去重
var arr = [1,2,2,3,3,4,7,7,8]
var newArr = _.uniq(arr)
5.使用对象属性的方法
实现原理:首先在函数中创建一个空对象和一个空数组,然后遍历传递进函数的数组,然后判断数组元素是否是对象obj的属性,如果它不是obj对象的属性,那么就证明这个数组元素的值在之前是没有出现过的,此时就可以将这个数组元素添加到newArr这个新数组中,然后给为obj添加上以这个数组元素值为属性名的属性,并设置其值为true。下一次再遍历到相同的值,!obj[arr[i]]的值就会为false,就不会执行if判断下的代码,这就实现了数组去重的效果。
去重代码如下:
function uniqArr(arr) {var obj = {}var newArr = []for (var i = 0; i < arr.length; i++) {if (!obj[arr[i]]) {newArr[newArr.length] = arr[i]obj[arr[i]] = true}}return newArr
}
6.使用Set构造函数方法
实现原理:将传递进来的数组通过Set构造函数会自动去重后形成Set类型的数据,然后再调用数组的from静态方法,将数据转成数组类型并返回。
去重代码如下:
function uniqArr(arr) {var newArr = new Set(arr)return Array.from(newArr)
}
7.使用map数据结构去重方法
实现原理:先在函数中创建一个map对象和一个新的空数组,然后遍历传入的数组,判断遍历到的数组元素是否是map已有属性,如果不是,将其给map设置上,然后再将该元素添加到新数组中,最后返回这个新数组。
去重代码如下:
function uniqArr(arr) {var map = new Map()var newArr = []for (var i = 0; i < arr.length; i++) {if (!map.has(arr[i])) {map.set(arr[i])newArr[newArr.length] = arr[i]}}return newArr
}
8.使用hasOwnProperty方法去重
实现原理:先在函数中创建一个空对象和一个新的空数组,通过循环遍历传入函数的数组,判断遍历到的数组元素是否是obj对象的已经拥有的属性,如果不是则将该数组元素添加到新数组中,并为obj对象设置以该数组元素值为属性名的属性,属性值设置为true,这样就保证了这个新数组中元素的唯一性,最后返回这个新数组。
去重代码如下:
function uniqArr(arr) {var obj = {}var newArr = []for (var i = 0; i < arr.length; i++) {if (!obj.hasOwnProperty(arr[i])) {newArr[newArr.length] = arr[i]obj[arr[i]] = true}}return newArr
}
9.使用双重for循环去重
实现原理:先创建一个新的空数组,然后循环遍历传入函数的数组,每次都让遍历到的数组元素和他后边的所有元素进行比较,如果有值和它相同的,就将它的值设置为一个空字符串,比较完毕后,判断这个元素是不是也是一个空字符串,如果不是,那就将其添加到新数组中,最后返回这个新数组。
去重代码如下:
function uniqArr(arr) {var newArr = []for (var i = 0; i < arr.length; i++) {for (var j = i + 1; j < arr.length; j++) {if (arr[i] == arr[j]) {arr[j] = ' '}}if (arr[i] != ' ') {newArr.push(arr[i])}}return newArr
}
10.使用includes方法去重
实现原理:先创建一个新的空数组,然后循环遍历传入函数的数组,每次都调用includes方法判断新数组中是否包含了这个数组元素,如果没有包含,就将这个数组元素添加到这个新数组中,最后返回这个新数组。
去重代码如下:
function uniqArr(arr) {var newArr = []for (var i = 0; i < arr.length; i++) {if (!newArr.includes(arr[i])) {newArr.push(arr[i])}}return newArr
}
javascript数组去重的10种方法相关推荐
- JavaScript数组去重的五种方法
JavaScript数组去重的五种方法 先简单准备一个数组,用于方法的实验: let array = [1,1,2,3,4,4,1,5,6,6,7,7,7]; console.log(`去重前的数组: ...
- Javascript数组去重的n种方法
开门见山,直接进入主题. 给定一个数组 arr,要求对数组arr进行去重,返回的结果为nArr. const arr = [1,2,3,4,2,1,2,4,5,2,3,1]; let nArr = [ ...
- js数组去重的10种方法
Methods 1: 思路:定义一个新数组,并存放原数组的第一个元素,然后将元素组一一和新数组的元素对比,若不同则存放在新数组中. function unique(arr) {let newArr = ...
- 两个对象数组去重的3种方法
两个对象数组去重的3种方法 前言 问题描述 解决方案一 解决方案二 解决方案三 前言 前段时间写过JavaScript数组去重最简单的 4 种方案,里面的数组元素是基本类型.本文要讲的数组元素是对象, ...
- 数组去重的12种方法总结
数组去重的11种方法 (1)ES5常用:利用for嵌套for,然后splice去重 function unique(arr) {for (var i = 0; i < arr.length; i ...
- java hashmap 去重_java数组去重的两种方法
我们对于数组元素的使用,有时候在创建数组的初期,并没有考虑过元素的重复问题.当我们想要不重复元素的数组时,就要再进行一步去重的工作.数组的去重有两种方法可以实现,一个是循环比较,另一个是hashSet ...
- JavaScript 数组遍历的五种方法(转)
转自:JavaScript 数组遍历的五种方法 这篇文章主要介绍了JavaScript 数组遍历的五种方法,帮助大家更好的理解和学习使用JavaScript,感兴趣的朋友可以了解下 在使用 JavaS ...
- java数组去重方法是,java数组去重的两种方法
我们对于数组元素的使用,有时候在创建数组的初期,并没有考虑过元素的重复问题.当我们想要不重复元素的数组时,就要再进行一步去重的工作.数组的去重有两种方法可以实现,一个是循环比较,另一个是hashSet ...
- 数组去重--这几种方法够不?
数组去重,是校招面试的必考知识点.简单的说,数组去重就是将一个数组中的相同的元素删除,只保留其中的一个.这里的相同其实是一个陷阱,有好多同学只认为值相等即为相同,而忽略类类型的判断.所以大家在进行数组 ...
最新文章
- 每日学习笔记(18)
- 工业机器人演示码垛和卸垛_浅谈饲料自动码垛机的应用及正确操作方法
- 2018 Multi-University Training Contest 3 Problem F. Grab The Tree 【YY+BFS】
- vc6怎么看错误在哪_网红莉哥怎么红的为什么被封了 网红莉哥1400事件视频在哪看...
- 你多久更新一次简历,决定了你的收入多久能提升
- HarmonyOS之AI能力·IM类意图识别
- python.day05
- 2016HUAS暑假集训训练题 F - 简单计算器
- linux命令iconv_Linux中iconv命令的简介和使用方法
- cxfservlet_webService框架CXF的简单使用
- 设置单行文本溢出省略导致不能自适应宽度,white-space: nowrap
- 计算机关机键 自动重启,电脑关机后自动重启怎么办?原因及解决方详解
- 【第六届强网杯CTF-Wp】
- Flutter TV应用的开发尝试
- java 扫描tcp端口号_Java 端口扫描器 TCP的实现方法
- SpringCloud Gateway网关为认证中心和用户微服务构建统一的认证授权入口
- 51单片机c语言学习笔记,51单片机学习笔记.docx
- 假如让我来设计“腾讯视频”的推荐系统
- js插值法的使用_初学js插入节点appendChild insertBefore使用方法
- 无穷小的比较(无穷小的替换常用公式)
热门文章
- 大一C语言学习笔记(2023.1.19)
- 不是光好看就够了,酷狗耳机将“把话讲清楚”推到新高度
- lua - 字符串分割
- 女孩借钱买机械键盘给男朋友,原谅我忍不住笑了
- (转)悲催IT男的心酸恋爱史
- 拉卡拉支付荣获第七届金柜台奖“年度最佳第三方金融服务”奖项
- python二维数组矩形倒置排序_python二维数组按某行某列顺序、逆序排序
- 借助Aspose.BarCode,轻松实现QR和众多二维码在线扫描
- JVM调优和参数配置
- Apple开发证书和发布证书不受信任问题