zoukankan      html  css  js  c++  java
  • 找出数组中重复的数字

    方法一、先排序再判断

      先对数组进行排序,判断前一个与后一个相等且不在新数组中的情况下,再把元素放到新数组中去。

            Array.prototype.duplicates=function () {
                var arr = this;
                var newArr=[];
                arr.sort();
                for(var i =0;i<arr.length;i++){
                    if(arr[i]==arr[i+1]&&(newArr.indexOf(arr[i])==-1) ){
                        newArr.push(arr[i]);
                        i++;
    
                    }
                }
    
                return newArr;
            }
            var a = [1,2,5,4,2,3,1,4,5,3,4];
            console.log(a.duplicates());//结果为[1,2,3,4,5]

    方法二、两个for循环

      数组中的每一个数均和后面的所有数进行比较,如果存在相等的数且不在新数组中,将该数加到新数组中。

    Array.prototype.duplicates=function () {
        var arr = this;
        var a=[];
        for(var i=0;i<arr.length-1;i++) {
            for(var j=i+1;j<arr.length;j++) {
                if(arr[i]==arr[j]&&a.indexOf(arr[i])==-1)  {
                    a.push(arr[i]);
                }
            }
        }
        return a.sort();
    }
    var a = [1,2,5,4,2,3,1,4,5,3,4];
    console.log(a.duplicates());//结果为[1,2,3,4,5]

    方法三、判断同一个数字的从前往后和从后往前位置是否一致

      循环数组中的每一个数,将从前往后第一次出现的位置和从后往前第一次出现的位置进行比较,如果不想等,说明该数重复。并且该数不在新数组中,将该数加到新数组后面。

    Array.prototype.duplicates=function (){
        var arr = this;
        var result = [];
        arr.forEach(item=>{
            if(arr.indexOf(item)!==arr.lastIndexOf(item)&&result.indexOf(item)==-1){
                result.push(item);
            }
        })
        return result;
    
    }
    var a = [1,2,5,4,2,3,1,4,5,3,4];
    console.log(a.duplicates());//结果为[1, 2, 5, 4, 3]
  • 相关阅读:
    C++ 引用的作用和用法
    const和指针
    sizeof的用法
    C++数组初始化的问题
    C++变量的存储类别(动态存储、静态存储、自动变量、寄存器变量、
    c++变量在内存中的存储区域(转)
    C语言的 &数组名 和 数组名的区别
    C语言运算中的数据类型自动转换原则
    链表反转
    常见的排序方法
  • 原文地址:https://www.cnblogs.com/gg-qq/p/10797316.html
Copyright © 2011-2022 走看看