javaScript中处理数组中重复元素的办法

参考链接:http://blog.csdn.net/zhihua_w/article/details/52184289

   以下方法自己都已经进行简单测试并且通过,需要的朋友可以直接拷贝使用!🙂

   一、获取数组中相同元素的下标

/**
     * @param    needle       重复元素值
     * @param    elementArray   对应的元素数组
     * @returns {Array}  返回一个数组
     */
  var  testArr = ["1","6","3","2","4","1","3","2","3","4","5"];
 function searchKeys(needle, elementArray)
    {
        console.log("needle=>"+needle,"elementArray=>"+elementArray)
        var result = [];
        for (i in elementArray)
        {
            if (elementArray[i] == needle)
            {
                result.push(i);
            }
        }
        return result;
    }

    console.log(searchKeys("1",testArr));

   二、将数组中重复元素过滤掉重新返回一个新的数组

1、方法一:
var  testArr = ["1","6","3","2","4","1","3","2","3","4","5"];
    Array.prototype.method1 = function(){
        var arr = [];    //定义一个临时数组
        for(var i = 0; i < this.length; i++){    //循环遍历当前数组
            //判断当前数组下标为i的元素是否已经保存到临时数组
            //如果已保存,则跳过,否则将此元素保存到临时数组中
            if(arr.indexOf(this[i]) == -1){
                arr.push(this[i]);
            }
        }
        return arr;
    }

    document.write(testArr.method1())//这个调用方法,将结果显示出来
2、方法二:
   var  testArr = ["1","6","3","2","4","1","3","2","3","4","5"];

    Array.prototype.method2 = function(){
        var h = {};    //定义一个hash表
        var arr = [];  //定义一个临时数组

        for(var i = 0; i < this.length; i++){    //循环遍历当前数组
            //对元素进行判断,看是否已经存在表中,如果存在则跳过,否则存入临时数组
            if(!h[this[i]]){
                //存入hash表
                h[this[i]] = true;
                //把当前数组元素存入到临时数组中
                arr.push(this[i]);
            }
        }
        return arr;
    }
    document.write(testArr.method2())
3、方法三:
   var  testArr = ["1","6","3","2","4","1","3","2","3","4","5"];

    Array.prototype.method3 = function(){
        //直接定义结果数组
        var arr = [this[0]];
        for(var i = 1; i < this.length; i++){    //从数组第二项开始循环遍历此数组
            //对元素进行判断:
            //如果数组当前元素在此数组中第一次出现的位置不是i
            //那么我们可以判断第i项元素是重复的,否则直接存入结果数组
            if(this.indexOf(this[i]) == i){
                arr.push(this[i]);
            }
        }
        return arr;

    }

    document.write(testArr.method3())

3、方法四:将结果按照从小到大的顺序排列出来
  var  testArr = ["1","6","3","2","4","1","3","2","3","4","5"];

    Array.prototype.method4 = function() {
        //将数组进行排序
        this.sort();
        //定义结果数组
        var arr = [this[0]];
        for (var i = 1; i < this.length; i++) {    //从数组第二项开始循环遍历数组
            //判断相邻两个元素是否相等,如果相等说明数据重复,否则将元素写入结果数组
            if (this[i] !== arr[arr.length - 1]) {
                arr.push(this[i]);
            }
        }
        return arr;

    }
        document.write(testArr.method4());
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 数组在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称...
    朱森阅读 4,007评论 2 13
  • 1 数组No11 数组:存放一组相同类型数据的数据结构 数组本身是引用数据类型,数组中的元素可以是基本数据类型...
    征程_Journey阅读 658评论 0 1
  • 由于最近都在freecodecamp上刷代码,运用了很多JavaScript数组的方法,因此做了一份关于JavaS...
    2bc5f46e925b阅读 2,004评论 0 16
  • [2017.08.02留言] 昨天收听了“娜些覃杰”,受到了启发和鼓励,然后加了“娜些年华”的微信好友,这样,我就...
    早知今日阅读 651评论 1 1
  • 先讲一段自己的经历。 我在学校念高一的时候,学校举办“班级篮球赛”。打的是循环赛,每两个班级之间都必须打一场。那时...
    曾格格阅读 640评论 6 8