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

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

 js 群中有人问数组如何去重,激发一阵热烈讨论。

如果是在 powershell 中,那就简单了,直接调用 get-unique 方法即可。

在 js 中,又如何来处理数组去重呢?

下面谈谈我对此问题的理解。

---------------------------------------------

一种思路是利用数组的 indexOf 方法(用 lastindexOf 应该也可以),此方法会检测传入 indexOf 方法中的值,是否在数组中出现过,如未找到,是返回值 -1 ,由此来判断。

var arr = [0, 1, 2, 3, 4, 5, 5, 4, 3, 2, 1];        var arr1 = ["red", "green", "blue", "red", "purple", "maroon", "green", "yellow", "blue","red"];        //利用数组的indexOf方法        function getUnique(arr) {            //用数组字面量声明一个空数组,将作为去重后的结果返回            var result = [];            //利用for遍历传入的测试数组,检测数组中的每个值是否已出现在结果数组中            //返回 -1 ,则表明无,随即调用数组的 push 方法把此值压入结果数组中            for (var i = 0; i < arr.length; i += 1) {                if (result.indexOf(arr[i]) == -1) {                    result.push(arr[i]);                }            }            return result;        }        alert(getUnique(arr));        alert(getUnique(arr1));

---------------------

另一思路,则是利用对象特性辅助去重

//借助 js 对象特性为辅助去重                function getUniquer1(arr) {            //用数组字面量声明一个空数组,将作为去重后的结果返回            var result = [];            //用对象字面量声明一个空对象,作为辅助判断当前数组值是否为重复            var aux = {};            for (var i = 0; i < arr.length; i += 1) {                if (!aux[arr[i]]) {     //最关键!判断对象中名为 arr[i] 的属性值是否为 false!                    result.push(arr[i]);   //调用push方法,把值压入结果数组中                    aux[arr[i]] = 1;     //重要!给对象中名为 arr[i]的属性赋值!                }            }            return result;        }        alert(getUniquer1(arr));        alert(getUniquer1(arr1));

 --------------------------------------------------------华丽的分割线--------------------------------------------

两种思路,高下立判:

前者调用 indexOf 方法,每次均需遍历整个数组,设想下,数组中有 10000 项,所耗费时间之大,不可想象。

 

转载于:https://www.cnblogs.com/sx00xs/p/6170460.html

你可能感兴趣的文章
dbunit学习
查看>>
html 中input标签的name属性
查看>>
快乐,因为有你——五一苏行记(一)
查看>>
python学习笔记(18)异常处理
查看>>
Jstree 使用CheckBox插件 选中父节点时被禁用的子节点也会选中问题
查看>>
UVa 11210 - Chinese Mahjong
查看>>
使用Jmail组件发邮件遇到问题的解决方法大全
查看>>
python 学习笔记之@property
查看>>
Java Web学习总结(7)JSP(一)
查看>>
WCF 大数据上传 Web.config 配置
查看>>
1-5.Webpack对Html模板处理
查看>>
第四次实验报告
查看>>
Mybatis中的update动态SQL语句
查看>>
文件处理
查看>>
shell命令之查看日志more/less命令
查看>>
测试TinyMCE
查看>>
C#----我对坐标系的理解和图形转动
查看>>
18-模块和包
查看>>
Python 系统性能信息模块psutil
查看>>
python 简单的爬虫
查看>>