亲爱的小伙伴,对于数组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种方法相关推荐

  1. JavaScript数组去重的五种方法

    JavaScript数组去重的五种方法 先简单准备一个数组,用于方法的实验: let array = [1,1,2,3,4,4,1,5,6,6,7,7,7]; console.log(`去重前的数组: ...

  2. Javascript数组去重的n种方法

    开门见山,直接进入主题. 给定一个数组 arr,要求对数组arr进行去重,返回的结果为nArr. const arr = [1,2,3,4,2,1,2,4,5,2,3,1]; let nArr = [ ...

  3. js数组去重的10种方法

    Methods 1: 思路:定义一个新数组,并存放原数组的第一个元素,然后将元素组一一和新数组的元素对比,若不同则存放在新数组中. function unique(arr) {let newArr = ...

  4. 两个对象数组去重的3种方法

    两个对象数组去重的3种方法 前言 问题描述 解决方案一 解决方案二 解决方案三 前言 前段时间写过JavaScript数组去重最简单的 4 种方案,里面的数组元素是基本类型.本文要讲的数组元素是对象, ...

  5. 数组去重的12种方法总结

    数组去重的11种方法 (1)ES5常用:利用for嵌套for,然后splice去重 function unique(arr) {for (var i = 0; i < arr.length; i ...

  6. java hashmap 去重_java数组去重的两种方法

    我们对于数组元素的使用,有时候在创建数组的初期,并没有考虑过元素的重复问题.当我们想要不重复元素的数组时,就要再进行一步去重的工作.数组的去重有两种方法可以实现,一个是循环比较,另一个是hashSet ...

  7. JavaScript 数组遍历的五种方法(转)

    转自:JavaScript 数组遍历的五种方法 这篇文章主要介绍了JavaScript 数组遍历的五种方法,帮助大家更好的理解和学习使用JavaScript,感兴趣的朋友可以了解下 在使用 JavaS ...

  8. java数组去重方法是,java数组去重的两种方法

    我们对于数组元素的使用,有时候在创建数组的初期,并没有考虑过元素的重复问题.当我们想要不重复元素的数组时,就要再进行一步去重的工作.数组的去重有两种方法可以实现,一个是循环比较,另一个是hashSet ...

  9. 数组去重--这几种方法够不?

    数组去重,是校招面试的必考知识点.简单的说,数组去重就是将一个数组中的相同的元素删除,只保留其中的一个.这里的相同其实是一个陷阱,有好多同学只认为值相等即为相同,而忽略类类型的判断.所以大家在进行数组 ...

最新文章

  1. 每日学习笔记(18)
  2. 工业机器人演示码垛和卸垛_浅谈饲料自动码垛机的应用及正确操作方法
  3. 2018 Multi-University Training Contest 3 Problem F. Grab The Tree 【YY+BFS】
  4. vc6怎么看错误在哪_网红莉哥怎么红的为什么被封了 网红莉哥1400事件视频在哪看...
  5. 你多久更新一次简历,决定了你的收入多久能提升
  6. HarmonyOS之AI能力·IM类意图识别
  7. python.day05
  8. 2016HUAS暑假集训训练题 F - 简单计算器
  9. linux命令iconv_Linux中iconv命令的简介和使用方法
  10. cxfservlet_webService框架CXF的简单使用
  11. 设置单行文本溢出省略导致不能自适应宽度,white-space: nowrap
  12. 计算机关机键 自动重启,电脑关机后自动重启怎么办?原因及解决方详解
  13. 【第六届强网杯CTF-Wp】
  14. Flutter TV应用的开发尝试
  15. java 扫描tcp端口号_Java 端口扫描器 TCP的实现方法
  16. SpringCloud Gateway网关为认证中心和用户微服务构建统一的认证授权入口
  17. 51单片机c语言学习笔记,51单片机学习笔记.docx
  18. 假如让我来设计“腾讯视频”的推荐系统
  19. js插值法的使用_初学js插入节点appendChild insertBefore使用方法
  20. 无穷小的比较(无穷小的替换常用公式)

热门文章

  1. 大一C语言学习笔记(2023.1.19)
  2. 不是光好看就够了,酷狗耳机将“把话讲清楚”推到新高度
  3. lua - 字符串分割
  4. 女孩借钱买机械键盘给男朋友,原谅我忍不住笑了
  5. (转)悲催IT男的心酸恋爱史
  6. 拉卡拉支付荣获第七届金柜台奖“年度最佳第三方金融服务”奖项
  7. python二维数组矩形倒置排序_python二维数组按某行某列顺序、逆序排序
  8. 借助Aspose.BarCode,轻松实现QR和众多二维码在线扫描
  9. JVM调优和参数配置
  10. Apple开发证书和发布证书不受信任问题