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]
  • 相关阅读:
    JMS(面向消息中间件)
    ActiveMQ消息中间件知识汇总
    linux安装mysql常见命令
    结果集耗尽时,检查是否关闭结果集时常用sql
    Spring注解驱动开发之事务概念
    nginx 基础
    HTTP原理
    MYSQL----cmake 数据库出错
    php安装Phalcon模块
    docker报错 Failed to start Docker Application Container Engine.
  • 原文地址:https://www.cnblogs.com/gg-qq/p/10797316.html
Copyright © 2011-2022 走看看