博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数组去重
阅读量:4554 次
发布时间:2019-06-08

本文共 1216 字,大约阅读时间需要 4 分钟。

整理一下JavaScript中几种数组去重的方法吧!

不管哪种去重方法,必然避免不了一个原数组和一个新数组的变量,就提前定义吧。

var arr1 = [2, 0, 23, 13, 5, 13, 2, 23];var arrnew = [];

第一种:纯粹循环的方法

for (var i = 0; i < arr1.length; i++) {    var flag = true;      // 定义一个标签    for (var j = i+1; j < arr1.length; j++) {        if (arr1[i] == arr1[j]) {            flag = false;            break;        }    }    if(flag) arrnew.push(arr1[i])}console.log(arrnew)

第二种:利用javascript内建函数indexOf

for (var i = 0; i < arr1.length; i++) {    if (arrnew.indexOf(arr1[i]) == -1)    arrnew.push(arr1[i])}console.log(arrnew)

第三种:其实有点类似于第二种方法,先对arr1进行排序,然后用新数组中的最后一个值,与排序后的arr1逐个比较,如果不等,则赋值给arrnew

arr1.sort(function (a, b) {    return a - b;});  for (var i = 0; i < arr1.length; i++) {    if (arr1[i] != arrnew[arrnew.length -1]) {        arrnew.push(arr1[i])    }}console.log(arrnew)

第四种:利用对象

var hash = {};arr1.forEach(function (item, index) {    if (!hash[item]){        hash[item] = item;        arrnew.push(item)    }})console.log(arrnew)

这里会存在一个问题,如果数组本身存在相同的fathy的值的话,这相同的fathy的值,在这种方法下面,就无法去重,如存在两个false, 两个0, 两个null,两个undefined类似这种falthy值,该方法是无法实现该类值的去重的。

 

第五种:利用ES6提供的Set数据格式

arrnew = [...new Set(arr1)];console.log(arrnew)

  

转载于:https://www.cnblogs.com/zhuhuoxingguang/p/6970172.html

你可能感兴趣的文章
1-9 RHEL7-文件权限管理
查看>>
apache服务器安装
查看>>
Search a 2D Matrix
查看>>
文件解析漏洞
查看>>
弹性成像的一些术语
查看>>
作业2
查看>>
vim 笔记
查看>>
MySQL的基本使用命令
查看>>
output 参数在存储过程中的用法
查看>>
大数加法和乘法(高精度)
查看>>
利用SynchronizationContext.Current在线程间同步上下文
查看>>
python各种类型转换-int,str,char,float,ord,hex,oct等
查看>>
sublime Text3 快捷键
查看>>
19 年书单
查看>>
不变模式
查看>>
matlab去云雾
查看>>
500lines项目简介
查看>>
Asp.net core logging 日志
查看>>
BOM浏览器对象模型
查看>>
Jq 遍历each()方法
查看>>