数组去重和排序

一、常见的数组排序方法:



//冒泡
function bubbleSort(arr){
    var r=1,i=0;
    for(r=1;r<arr.length;r++){
        for(i=0;i<arr.length-1;i++){
            arr[i]>arr[i+1]&&(arr[i+1]=[arr[i],arr[i]=arr[i+1]][0])
        }
    }
}


//插入

    var arr=[2,4,1,3,5];
    function insertSort(arr){
        for(var i=1;i<arr.length;i++){
            var temp=arr[i];
            var p=i-1;
            while(temp<arr[p]&&p>=0){
                arr[p+1]=arr[p];
                p--;
            }
            arr[p+1]=temp;
        }
    }
    insertSort(arr);
    console.log(arr);

二、数组去重方法

var arr=["air","b","clock","army","clock","air"];
    //1.遍历
    function unique1(arr){
        for(var i=0,unique=[];i<arr.length;i++){
            var r=unique.indexOf(arr[i]);
            if(r==-1){
                unique.push(arr[i]);
            }
        }
        return unique;
    }
    console.log(String(unique1(arr)))
    //2.hash
    function unique2(arr){
        for(var i=0,unique={};i<arr.length;i++){
            unique[arr[i]]===undefined&&(unique[arr[i]]=1);

        }
        arr=[];
        for(var key in unique){
            arr.push(key);
        }
        return arr;
    }
    console.log(String(unique2(arr)))
    //3.正则
    function unique3(arr){
        var reg=/(^|,,)([^,]+)(..\2)*/g;
        return arr.sort().join(",,").replace(reg,"$1$2").split(",,");
    }
    console.log(unique3(arr));

原文地址:https://www.cnblogs.com/qinmanyu/p/10105243.html

时间: 2024-11-02 03:21:59

数组去重和排序的相关文章

数组去重及排序/0~10随机数字/字符串中出现最多的字符及次数

数组去重及排序: var arr = [1,5,1,2,6,8,1,81,9,0]; for(var i=0;i<arr.length;i++){ for(var j=i+1;j<arr.length;j++){ if(arr[i] == arr[j]){ arr.splice(j,1); j--; } } } arr.sort(function(a,b){ return a-b; // 从小到大排序 }) alert(arr); // 0,1,2,5,6,8,9,81 arr.sort(fu

数组去重统计排序

需求是:统计次数并按照要求排序: 思路: 第一步:拼接字符串,返回一个字符串数组: 第二步 :查询数组,去重并统计次数: 第三步:使用sort()函数进行排序: 第四步:join()函数.把数组元素放到字符串中,的确很绕,学程序的没办法,多练习. <!doctype html> <html> <head> <meta charset="utf-8"> <title>数组去重统计排序</title> <styl

7、数组去重和排序

一.数组去重 /** * 数组去重 * 1.双循环法-判断有无相等项 * 注意:第二个循环要从 i+1 开始 * */ let circleRepeat = function (ary) { for(let i=0;i<ary.length;i++){ let cur = ary[i]; for(let j=i+1;j<ary.length;j++){ if(cur === ary[j]){ ary.splice(j,1); j--; } } } return ary }; // consol

数组-去重、排序方法、json排序

1.数组去重 /*方法一: 1,'1' 会被认为是相同的; 所有hash对象,如:{x;1},{y:1}会被认为是相同的 //10ms */ Array.prototype.unique=function(){ var newArr=[],obj={}; for(var i=0,len=this.length;i<len;i++){ if(!obj[this[i]]){ newArr.push(this[i]); obj[this[i]]=true; } } return newArr; } /

简洁的数组去重并排序

1 var c=[1,8,6,4,88,22,99,4,6,86,5,58,89,5]; 2 c.sort(function (a,b) { 3 return a-b;//从小到大排序 改变原数组 4 }); 5 c = unique(c); 6 function unique(arr){ 7 var res = [arr[0]]; 8 for(var i=1;i<arr.length;i++){ 9 if(arr[i] !== res[res.length-1]){ 10 res.push(a

ES6 set方法对数组去重和排序

之前对数组做去重有很多方法,但大多比较麻烦,现在用ES6里面的set方法非常方便 直接上代码 <!doctype html> <html> <head> <meta charset="utf-8"> <title>无标题文档</title> </head> <body> <script> function 初级写法(){ let arr = [3,5,2,1,3,2,4]; le

数组去重并排序

unique (arr) { for (let i = 0; i < arr.length; i++) { for (let j = i + 1; j < arr.length; j++) { if (arr[i] === arr[j]) { arr.splice(j, 1) j-- } } } // 升序 arr.sort((a, b) => { return b < a ? 1 : -1 }) // 降序 // arr.sort((a, b) => { // return

数组的合并,去重,排序

一,两个数组的合并去重: var arr1 = ['a','b']; var arr2 = ['a','c','d']; var arr3 = [1,'d',undefined,true,null]; //合并两个数组,去重 var concat_ = function(arr1,arr2){ //不要直接使用var arr = arr1,这样arr只是arr1的一个引用,两者的修改会互相影响 var arr = arr1.concat(); //或者使用slice()复制,var arr =

斐波那契数列,冒泡排序,选择排序,数组去重

斐波那契数列: 斐波那契数列,又称黄金分割数列,指的是这样一个数列:0.1.1.2.3.5.8.13.21.--在数学上,斐波纳契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)在现代物理.准晶体结构.化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从1963起出版了以<斐波纳契数列季刊>为名的一份数学杂志,用于专门刊载这方面的研究成果. 这个数列从第二项开始,每一项都等于前两项之和. function abc(num){