JS实现数组去重算法

这次给大家带来JS实现数组去重算法,JS实现数组去重算法的注意事项有哪些,下面就是实战案例,一起来看一下。

测试用例:

arr = [“1″,3,”1″,1,4,5,1,”2”,5,1,{“name”:”li”,”age”:20},2,4,3,{“name”:”li”,”age”:20},””];

方法一:借助于临时数组与indexOf , 算法复杂度为:O(n^2)

function unique1(arr){  var temp = [];  for(var i=0; i<arr.length; i++){    if(temp.indexOf(arr[i]) == -1){      temp.push(arr[i]);    }  }  return temp;}

登录后复制

测试结果:

unique1(arr) : [“1”, 3, 1, 4, 5, “2”, Object { name=”li”, age=20}, 2, Object { name=”li”, age=20}, “”]

bug 无法区分对象

方法二 : 用JavaScript中的Object对象来当作哈希表

function unique2(arr){  var temp=[];  var hash={};  for(var i=0; i<arr.length;i++){    if(!hash[arr[i]]){      hash[arr[i]]=true;      temp.push(arr[i]);    }  }  return temp;}

登录后复制

测试结果:

unique2(arr) : [“1”, 3, 4, 5, “2”, Object { name=”li”, age=20}, “”]

bug : 无法区分: 1 和 “1”

修改

function unique2(arr){  var temp=[];  var hash={};  for(var i=0; i<arr.length;i++){      var item = arr[i];    var key = typeof(item)+item;    if(!hash[key]){      hash[key]=true;      temp.push(arr[i]);    }  }  return temp;}

登录后复制

测试结果:

unique2(arr) : [“1”, 3, 1, 4, 5, “2”, Object { name=”li”, age=20}, 2, “”]

方法三:先用sort对数组排序,然后借助临时数组,存储相同元素的最后一个,该方法只能用于纯Number类型数组

function unique3(arr){  arr.sort(function(a,b){    return a-b;  });  var temp = [];  for(var i=0;i<arr.length;i++){    if(arr[i] !== arr[i+1]){      temp.push(arr[i]);    }  }  return temp;}

登录后复制

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

JS callback回调函数使用案例详解

React Navigation实战中有哪些注意事项

以上就是JS实现数组去重算法的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2762324.html

(0)
上一篇 2025年3月8日 09:54:47
下一篇 2025年2月17日 23:29:21

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • JS取得最小公倍数与最大公约数

    这次给大家带来JS取得最小公倍数与最大公约数,JS取得最小公倍数与最大公约数的注意事项有哪些,下面就是实战案例,一起来看一下。 方法来自求多个数最小公倍数的一种变换算法(详见附录说明) 最小公倍数的算法由最大公约数转化而来。最大公约数可通过…

    编程技术 2025年3月8日
    200
  • JS操作DOM树遍历方法总结

    这次给大家带来JS操作DOM树遍历方法总结,JS操作DOM树遍历的注意事项有哪些,下面就是实战案例,一起来看一下。 本文实例讲述了JavaScript实现的DOM树遍历方法。分享给大家供大家参考,具体如下: 二叉 DOM 树的遍历 func…

    编程技术 2025年3月8日
    200
  • JS跨域POST实现步骤详解

    这次给大家带来JS跨域POST实现步骤详解,JS跨域POST实现的注意事项有哪些,下面就是实战案例,一起来看一下。 javascript 跨域是一个很常见的问题,其中 jsonp 是一个最常用的手段,但是 jsonp 只支持 get,不支持…

    编程技术 2025年3月8日
    200
  • HTML文档中嵌入JS方法总结

    这次给大家带来HTML文档中嵌入JS方法总结,HTML文档中嵌入JS的注意事项有哪些,下面就是实战案例,一起来看一下。 在HTML里嵌入JavaScript 在HTML文档里嵌入客户端JavaScript代码有4中方法: 1.内嵌,放置在和…

    编程技术 2025年3月8日
    200
  • JS中常出现哪些BUG和错误

    这次给大家带来JS中常出现哪些BUG和错误,解决JS中常出现BUG和错误的注意事项有哪些,下面就是实战案例,一起来看一下。 计算机程序中的缺陷通常称为 bug。 它让程序员觉得很好,将它们想象成小事,只是碰巧进入我们的作品。 实际上,当然,…

    编程技术 2025年3月8日
    200
  • JS中this的指向以及call、apply的作用_基础知识

    本篇文章给大家分享了JS基础内容this指向以及call、apply的相关知识点内容,有兴趣的朋友可以学习参考下。 在具体的实际应用中,this 的指向无法在函数定义时确定,而是在函数执行的时候才确定的,根据执行时的环境大致可以分为以下3种…

    编程技术 2025年3月8日
    200
  • JS同步、异步与延迟加载实现总结

    这次给大家带来JS同步、异步与延迟加载实现总结,JS同步、异步与延迟加载实现的注意事项有哪些,下面就是实战案例,一起来看一下。 一:同步加载 我们平时使用的最多的一种方式。 同步模式,又称阻塞模式,会阻止浏览器的后续处理,停止后续的解析,只…

    编程技术 2025年3月8日
    200
  • JS生成指定范围随机数和随机序列方法详解

    这次给大家带来JS生成指定范围随机数和随机序列方法详解,JS生成指定范围随机数和随机序列的注意事项有哪些,下面就是实战案例,一起来看一下。 在JavaScript中我们经常使用Math.random()方法生成随机数,但是该方法生成的随机数…

    编程技术 2025年3月8日
    200
  • JS内加载jquery.js方法详解

    这次给大家带来JS内加载jquery.js方法详解,JS内加载jquery.js方法的注意事项有哪些,下面就是实战案例,一起来看一下。 最近有一个需求: 1.在一个html中只能引入一个JS文件 不能有JS代码和其他JS文件的引入; 2.这…

    2025年3月8日
    200
  • js三种调用方式优缺点总结

    这次给大家带来js三种调用方式优缺点总结,使用js三种调用方式的注意事项有哪些,下面就是实战案例,一起来看一下。 本文讲述了js的三种使用方式(行内js、内部js、外部js)的实例代码,感兴趣的小伙伴们可以参考一下,具体如下: 1、行内js…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论