数组查重:简单点说,就是找出数组中重复的元素然后去除,最后得到一个没有重复元素的数组。

// 方法一思路:
    1.构建一个新的数组,用于存放结果。  
    2.for循环中每次从数组取出一个元素,用这个元素与结果数组的中的每个元素相比。

3.若结果数组中没有和取出的元素相同,则存放在结果数组中。

  1. //自定义函数
  2. var ret= function(arr){
  3. var res=[arr[0]];
  4. for(var j=1;j<arr.length;j++){
  5. var repeat= false;
  6. for(var i=0;i<res.length;i++){
  7. if(arr[j]==res[i]){
  8. repeat=true;
  9. break;
  10. }
  11. }
  12. if(!repeat){
  13. res.push(arr[j]);
  14. }
  15. }
  16. return res;
  17. };
  18. var a=[1,3,4,3,5,'aa','bb','aa'];
  19. document.write(ret(a));  //1,3,4,5,aa,bb
  20. //或者给数组添加方法
  21. Array.prototype.ret= function(){
  22. var res=[this[0]];
  23. for(var j=1;j<this.length;j++){
  24. var repeat= false;
  25. for(var i=0;i<res.length;i++){
  26. if(this[j]==res[i]){
  27. repeat=true;
  28. break;
  29. }
  30. }
  31. if(!repeat){
  32. res.push(this[j]);
  33. }
  34. }
  35. return res;
  36. }
  37. var a=[1,3,4,3,5,'aa','bb','aa'];
  38. document.write(a.ret());  //1,3,4,5,aa,bb

//方法二思路:(有点:查重效率高;缺点:由于查重之前对数组进行了排序,还回结果也是排序的,如果不改变原数组的顺序去重,那这种方法便不可取了。)
    1.首先给原数组进行排序。
    2.检查原数组的第i个元素与结果数组的最后一个元素是否相等。因为已经排序,所以重复元素会在相邻位置。
    3.如果不相同,则将该元素存入结果数组中。

  1. //自定义函数
  2. var ret1= function(arr){
  3. arr.sort();
  4. var res= [arr[0]];
  5. for(var i=1;i<arr.length;i++){
  6. if(arr[i]!=res[res.length-1]){
  7. res.push(arr[i]);
  8. }
  9. }
  10. return res;
  11. }
  12. var b= [1,3,4,2,3,4];
  13. document.write(ret1(b));  //1,2,3,4
  14. //或者给数组添加方法
  15. Array.prototype.ret1= function(){
  16. this.sort();
  17. var res= [this[0]];
  18. for(var i=1;i<this.length;i++){
  19. if(arr[i]!=res[res.length-1]){
  20. res.push(this[i]);
  21. }
  22. }
  23. return res;
  24. }
  25. var b= [1,3,4,2,3,4];
  26. document.write(b.ret1());  //1,2,3,4

/方法三思路:(推荐使用这个方法)
    1.定义一个结果数组存放结果。
    2.创建一个新对象。
    3.for循环的时候,每次取出一个元素与对象对比,如果这个元素不重复则把它放在结果数组里,同时把这个元素的内容作为对象的属性,并赋值为1。
说明:至于如何对比取出的元素与对象,就是每次从原数组取出一个元素,然后到对象中访问这个属性,如果访问到值,则说明重复。

    1. //自定义函数
    2. var ret2= function(arr){
    3. var res=[];
    4. var json={};
    5. for(var i=0;i<arr.length;i++){
    6. if(!json[arr[i]]){
    7. res.push(arr[i]);
    8. json[arr[i]]=1;
    9. }
    10. }
    11. return res;
    12. }
    13. var c=[1,2,3,2,1];
    14. document.write(ret2(c)); //1,2,3
    15. //或者给数组添加方法
    16. Array.prototype.ret2= function(){
    17. var res=[];
    18. var json={};
    19. for(var i=0;i<this.length;i++){
    20. if(!json[this[i]]){
    21. res.push(this[i]);
    22. json[this[i]]=1;
    23. }
    24. }
    25. return res;
    26. }
    27. var c=[1,2,3,2,1];
    28. document.write(c.ret2()); //1,2,3

Javascript中数组查重的方法总结大全的更多相关文章

  1. 总结Javascript中数组各种去重的方法

    相信大家都知道网上关于Javascript中数组去重的方法很多,这篇文章给大家总结Javascript中数组各种去重的方法,相信本文对大家学习和使用Javascript具有一定的参考借鉴价值,有需要的 ...

  2. JavaScript中数组Array.sort()排序方法详解

    JavaScript中数组的sort()方法主要用于对数组的元素进行排序.其中,sort()方法有一个可选参数.但是,此参数必须是函数. 数组在调用sort()方法时,如果没有传参将按字母顺序(字符编 ...

  3. javascript中数组的22种方法

    × 目录 [1]对象继承 [2]数组转换 [3]栈和队列[4]数组排序[5]数组拼接[6]创建数组[7]数组删改[8]数组位置[9]数组归并[10]数组迭代[11]总结 前面的话 数组总共有22种方法 ...

  4. javascript中数组的22种方法 (转载)

    前面的话 数组总共有22种方法,本文将其分为对象继承方法.数组转换方法.栈和队列方法.数组排序方法.数组拼接方法.创建子数组方法.数组删改方法.数组位置方法.数组归并方法和数组迭代方法共10类来进行详 ...

  5. javascript中数组和字符串的方法比较

    × 目录 [1]可索引 [2]转换 [3]拼接[4]创建[5]位置 前面的话 字符串和数组有很多的相同之处,它们的方法众多,且相似度很高:但它们又有不同之处,字符串是不可变值,于是可以把其看作只读的数 ...

  6. javascript中数组的深拷贝的方法

    一.什么是浅拷贝 在js当中,我们常常遇到数组复制的的情况,许多人一般都会使用"="来直接把一个数组赋值给一个变量,如 var a=[1,2,3]; var b=a; consol ...

  7. JavaScript中数组相关的属性方法

    下面的这些方法会改变调用它们的对象自身的值: Array.prototype.copyWithin() 在数组内部,将一段元素序列拷贝到另一段元素序列上,覆盖原有的值. Array.prototype ...

  8. JavaScript中数组Array方法详解

    ECMAScript 3在Array.prototype中定义了一些很有用的操作数组的函数,这意味着这些函数作为任何数组的方法都是可用的. 1.Array.join()方法 Array.join()方 ...

  9. JavaScript中数组常用方法的总结

    JavaScript中数组Array常用的方法总结 标签(空格分隔): JavaScript ECMAScript数组给我们提供了许多常用的方法,便于我们对数组进行操作,下面,就来总结一下这些方法. ...

随机推荐

  1. 最详细的原生js实现ajax的封装

    1. ajax的介绍 1.1 含义 ajax 的全称是Asynchronous JavaScript and XML 简单理解下:ajax就是异步的js和服务端的数据 1.2 组成 异步的js:事件, ...

  2. Java入门学习总结_02

    一:注释 注释主要就是用来解释某句或者某段代码使得其他人调试更加方便.特点是在编译代码的时候不会编译注释, 不管发不发生错误.注释主要分为单行注释//(快捷键ctrl+/).多行注释/* */(快捷键 ...

  3. Octave基本语法

    基本运算 octave:3> 5+6 ans = 11 octave:4> 3-2 ans = 1 octave:5> 8*9 ans = 72 octave:6> 8/4 a ...

  4. Java常用数学类和BigDecimal

    笔记: Math类 * java.lang.Math提供了一系列静态方法用于科学计算:其方法的参数和返回值类型一般为double型. * abs 绝对值 * acos,asin,atan,cos,si ...

  5. flutter 编译报错 ../extended_network_image_provider.dart:63:41: Error: Type 'DecoderCallback' not found

    flutter 编译的时候报错 Compiler message:../../../.pub-cache/hosted/pub.dartlang.org/extended_image_library- ...

  6. Python 练习实例2

    Python 练习实例2 题目:企业发放的奖金根据利润提成.利润(I)低https://www.xuanhe.net/于或等于10万元时,奖金可提10%:利润高于10万元,低于20万元时,低于10万元 ...

  7. 【算法题目】Leetcode算法题思路:两数相加

    在LeetCode上刷了一题比较基础的算法题,一开始也能解出来,不过在解题过程中用了比较多的if判断,看起来代码比较差,经过思考和改进把原来的算法优化了. 题目: 给出两个 非空 的链表用来表示两个非 ...

  8. [HNOI2015]开店 简要题解

    主席树. 推下式子,发现点的深度和好算,lca深度和不好算. lca深度之和有个套路:先给a到根路径+1,再算b到根的和. 如果可以离线,即LNOI的LCA.本题强制在线,可持久化. 由于区间修改,使 ...

  9. 006_STM32程序移植之_SYN6288语音模块

    1. 测试环境:STM32C8T6 2. 测试模块:SYN6288语音模块 3. 测试接口: SYN6288语音模块: VCC------------------3.3V GND----------- ...

  10. 对象(Object)相关

    详情参考 1.对象的表示方法 js原生提供Object构造函数.js中所有的对象都是Object的实例. 定义一个对象最简单的就是var obj = {}; ES6属性和方法允许简写.对象的super ...