1.最简方法

创建一个空的新数组,依次检查旧数组的值是否存在于新数组中,如果不存在就push进去。主要用到数组的indexOf方法。

            function arrUnique(arr){var newArr = [];for (i = 0; i < arr.length; i++){if (newArr.indexOf(arr[i]) == -1){newArr.push(arr[i]);}}return newArr;}var arr = [1,2,3,4,5,3,2];console.log(arrUnique(arr));

2.对象属性赋值1

通过将旧数组的值分别赋值给对象的属性,由于对象属性赋值时旧属性会被新的同名属性覆盖,所以保证了数组(属性)的单一性,最后通过for in将这些属性push到新数组中。

        function arrUnique(arr){var obj = {};var newArr = [];arr.map(function(item){obj[item] = null;})for (var key in obj){newArr.push(Number(key));}return newArr;}var arr = [1,2,3,4,5,3,2];console.log(arrUnique(arr));

3 对象属性赋值2

创建一个空数组和空对象,检查旧数组的值是否作为对象的属性存在,如果不存在就给这个对象添加数组值属性,属性值为1,并且把这个数组的值赋值给新数组。利用的原理还是对象属性值会被覆盖,也就是说是唯一的。下标的引用要比用indexOf搜索数组快的多,所以该方法方法2快。此处的对象其实是一个哈希表,虽然速度快很多,但是内存占用较大,也就是以空间换时间。

        function arrUnique(arr){var newArr = [];var obj = {};for (var i = 0; i < arr.length; i++){if (!obj[arr[i]]){newArr.push(arr[i]);obj[arr[i]]=1;}}return newArr;}var arr = [1,2,3,4,5,3,2];console.log(arrUnique(arr));

4 先使用数组的sort方法排序,节省空间且速度较快

先对原数组排序,然后判断数组元素是否在新数组的最后一位,如果不是就push进去。这种方法比单纯循环要快很多,虽然没有哈希表方式快,但是不占用较大空间。

            function arrUnique(arr){arr.sort();//快排var newArr = [];for(var i = 0; i < arr.length; i++){if (arr[i] !== newArr[newArr.length - 1]){newArr.push(arr[i]);}}return newArr;}var arr = [1,2,3,4,5,3,2];console.log(arrUnique(arr));


转载:数组去重的JavaScript实现

数组去重的JavaScript实现相关推荐

  1. 数组去重(JavaScript)先从网上整理一波,待验证

    数组去重(JavaScript) 前端面试题:给定一个数组[1,3,2,4,5,3,22,21,2],去重. 方法很多 for循环遍历 双层for循环,存储到新的数组 双层for循环,不声明新的数组, ...

  2. php 数组去重_数组去重(JavaScript 为例)

    数组去重,就是在数组中查找相同的元素,保留其中一个,去除其他元素的程. 从这句话揭示了数组去重的两个关键因素: 找到重复项 去除重复项 本文告诉你在遇到去重问题时该如何思考,并以 JavaScript ...

  3. java数组去重_再谈JavaScript数组去重

    JavaScript的数组去重是一个老生常谈的话题了.随便搜一搜就能找到非常多不同版本的解法. 细想一下,这样一个看似简单的需求,如果要做到完备,涉及的知识和需要注意的地方着实不少. 定义重复(相等) ...

  4. JavaScript数组去重算法实例

    本文主要介绍了JavaScript数组去重算法,结合实例形式总结分析了JavaScript数组去重相关的读写.遍历.比较.排序等操作及算法改进相关实现技巧,需要的朋友可以参考下 测试用例: arr = ...

  5. Java数组去重的多种方法,[Java教程]JavaScript常见的五种数组去重的方式

    [Java教程]JavaScript常见的五种数组去重的方式 0 2016-12-14 15:00:17 ▓▓▓▓▓▓ 大致介绍 JavaScript的数组去重问题在许多面试中都会遇到,现在做个总结 ...

  6. Python JavaScript 的数组去重

    "数组去重" 是实际应用中常用的操作,出现在面试题中的概率也很高,今天简述一下 Python 和 JavaScript 中数组去重的方法 python数组去重 >>&g ...

  7. javascript数组 去重

    数组去重的方法有很多,到底哪种是最理想的,自己不清楚.于是自己测试了下数组去重的效果和性能.测试十万个数据,代码和所耗大概时间如下. 到底采用哪种方法,根据实际情况而定吧. /*方法一: 1,'1' ...

  8. 六种方法实现JavaScript数组去重

    tip:有问题或者需要大厂内推的+我脉脉哦:丛培森 ٩( 'ω' )و [本文源址:http://blog.csdn.net/q1056843325/article/details/73277063 ...

  9. 重温 JavaScript 系列(2):数组去重、类数组转换数组

    在牛客上看到了一些汇总文章,这里总结一下JavaScript的数组去重解决方案: 假设测试数组: var arr = [1,1,2,2,3,'true','true',true,true,15,15, ...

最新文章

  1. swift支持多线程操作数据库类库-CoreDataManager
  2. 修改maven中的jdk版本
  3. VSCODE打开一个文件,另一个文件就关闭的问题的解决方法
  4. 【Android 安全】DEX 加密 ( Java 工具开发 | 解压 apk 文件 | 加密生成 dex 文件 | 打包未签名 apk 文件 | 文件解压缩相关代码 )
  5. 深入分析几种PHP获取客户端IP的情况
  6. [转载]spring security 的 logout 功能
  7. apache php显示成列表,centos中设置apache显示目录列表
  8. C#LeetCode刷题之#141-环形链表(Linked List Cycle)
  9. C#读写config配置文件
  10. Node.js Express+Mongodb 项目实战
  11. so文件动态加载注意事项
  12. 解决Tomcat catalina.out 不断成长导致档案过大的问题
  13. “21天好习惯”第一期-14
  14. 【修身养性】那些看不见的教养
  15. unity显示FPS
  16. 汽车汽配行业SaaS多租户系统助力车企打通行业壁垒,构建数字化管理平台
  17. 用命令启动java我的世界_我的世界Minecraft Mod开发学习笔记 - 实现一个简单的命令Mod...
  18. 一个喷嚏就能传播病毒?关于病毒,还有多少是你不知道的?
  19. centOS6.5中部署java调用h2o中python包环境
  20. 中兴笔试题目总结(四)软件工程部分

热门文章

  1. SQL应用与开发:(七)数据操作 #183; 查 #183; (一)常规型
  2. 使用ImageMagick和Tesseract进行简单数字图像识别
  3. sap中有关地址及电话的相关表
  4. 问题三十五: 怎么用ray tracing画二次曲面(quadratic surfaces)(1)——椭球面
  5. 大数据分析如何应用在驾驶世界
  6. 如何更好的使用大数据
  7. java 栈_Java实现单链表、栈、队列三种数据结构
  8. AcWing 1855. 愤怒的奶牛(枚举+暴力)
  9. Ubuntu php安装过程,ubuntu安装lemp步骤
  10. 计算机二级office试题27答案,2017年12月计算机二级MS Office习题答案(一)