数组-去重、排序方法、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)
原文地址:https://www.cnblogs.com/zhidong123/p/4208637.html