首页 > 代码库 > 数组-去重、排序方法、json排序

数组-去重、排序方法、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)

 

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