zoukankan      html  css  js  c++  java
  • 数组-去重、排序方法、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;
    }
    
    /*方法一改进版:所有hash对象,如:{x;1},{y:1}会被认为是相同的  //30ms*/
    Array.prototype.unique=function(){
        var newArr=[],obj={};
        for(var i=0,len=this.length;i<len;i++){
            if(!obj[typeof(this[i])+this[i]]){ 
                newArr.push(this[i]);
                obj[typeof(this[i])+this[i]]=this[i];
            }
        }
        return newArr;
    }
    
    /*方法二: 去重结果最好,但耗性能     //250ms*/
    Array.prototype.unique=function(){
        var newArr=this.concat();
        for(var i=0,len=newArr.length;i<len;i++) {
            for(var j=i+1,len=newArr.length;j<len;j++) {
                //注意 ===
                if(newArr[i]===newArr[j]) {
                    newArr.splice(j,1);
                    j--;
                }
            }
        }
        return newArr;
    }
    
    /*方法三:  不能去重hash对象  //25ms */
    Array.prototype.unique = function(){
        var newArr = []; //一个新的临时数组
        for(var i = 0,len=this.length; i < len; i++){        
            if (newArr.indexOf(this[i]) == -1){    //如果当前数组的第i已经保存进了临时数组,那么跳过,否则把当前项push到临时数组里面
                newArr.push(this[i]);
            }
        }
        return newArr;
    }

    数组排序:

    Array.sort()方法是用来对数组项进行排序的 ,默认情况下是进行升序排列。sort() 方法可以接受一个 方法为参数。

    sort()排序时每次比较两个数组项都回执行这个参数,并把两个比较的数组项作为参数传递给这个函数。当函数返回值为1的时候就交换两个数组项的顺序,否则就不交换。

    var p = [5, 2, 3, 1, 7, 5, 6, 9, 6, 0];
              function down(a, b) {
                  return   (a < b) ? 1 : -1
              }
              p.sort(down)
              alert(p)

    json排序:

    var p = [
                {name:"kitty", age:12},
                {name:"sonny", age:9},
                {name:"jake", age:13},
                {name:"fun", age:24}
            ]
            function down(x, y) {
                return (x.age < y.age) ? 1 : -1
     
            }
            p.sort(down)
  • 相关阅读:
    吊打XXX
    [CQOI2011]动态逆序对
    陌上花开
    【BOI2007】摩基亚Mokia
    [SCOI2008]奖励关
    最小生成树
    打表
    【中学高级本】倒酒
    整数合并
    韩信点兵
  • 原文地址:https://www.cnblogs.com/zhidong123/p/4208637.html
Copyright © 2011-2022 走看看