入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

node,javascript数组排序,去重复,并集,交集,差集

创建时间:2014-07-14 投稿人: 浏览次数:116
<pre name="code" class="javascript">/**
 * Created by lht on 14-7-14.
 */
var arr1=[1,2,2,3,4,4,3,45,6,7,5];
var arr2=[3,4,5,6,56];
var arr3=[]


//var arr1=["Jani","Hege","Stale","Kai","Jim","Borge","Tove","Jani","Hege"];
//var arr2=["Tome","Hege","Stale","Michale","Amy"];
//var arr3=[]

//输入的是否为数组或空数组
var nullArray=function(arr){
    if(Array.isArray(arr)){
        if(arr.length===0) return false
        return true
    }
    return false;
}
console.log(nullArray(arr1));  //true
console.log(nullArray(arr3));  //false

//去掉重复项
var arrayUnique=function(arr){
    var result=[];
    var l=arr.length;
    if(nullArray(arr)){
       for(var i=0;i<l;i++){
           var temp=arr.slice(i+1,l)
           if(temp.indexOf(arr[i])==-1){
               result.push(arr[i]);
           }else{
               continue;
           }
       }
    }
    return result;
}
console.log(arrayUnique(arr1)) //[ 1, 2, 4, 3, 45, 6, 7, 5 ]


//数组排序按大小
console.log(arr1.sort()) //[ 1, 2, 2, 3, 3, 4, 4, 45, 5, 6, 7 ]


//数组排序按数字 ,也可以降序
//flag不存在默认升序
//flag存在降序
var arraySortByNum=function(arr,flag){
    if(flag){
        return arr.sort(function(x,y){return y-x})
    }else{
        return arr.sort(function(x,y){return x-y})
    }
}
console.log(arr1);  //[ 1, 2, 2, 3, 3, 4, 4, 45, 5, 6, 7 ]
console.log(arraySortByNum(arr1));//[ 1, 2, 2, 3, 3, 4, 4, 5, 6, 7, 45 ]
console.log(arraySortByNum(arr1,"desc"));//[ 45, 7, 6, 5, 4, 4, 3, 3, 2, 2, 1 ]


//求交集
var arrayIntersection=function(arr1,arr2){
    var result=[];
    if(nullArray(arr1) && nullArray(arr2)){
        arrayUnique(arr1).forEach(function(x){
            arr2.forEach(function(y){
            if(x===y)result.push(x);
            })
        })
        return result;
    }else{
        return [];
    }
}
console.log(arrayIntersection(arr1,arr2)) //[ 6, 5, 4, 3 ]


//求差集arr1-arr2
var arrayMinus=function(arr1,arr2){
    var result=[];
    arr1.forEach(function(x){
        if(arr2.indexOf(x)===-1){
            result.push(x);
        }else{
            return;
        }
    })
    return result;
}


console.log(arrayMinus(arr1,arr2)) //[ 45, 7, 2, 2, 1 ]


//求并集
var arrayUnion=function(arr1,arr2){
//    var result=arr2;
//    arr1.forEach(function(x){
//        result.push(x)
//    })
    return arrayUnique(arr1.concat(arr2));
//    return arr1.concat(arr2);
}
console.log(arrayUnion(arr1,arr2)) //[ 56, 45, 7, 6, 5, 4, 3, 2, 1 ]

// 对象数组快速排序
var sortObj=function(arr,key,dir){
    key=key||"id";
    dir=dir|| null;
    if (arr.length == 0) return [];

    var left = new Array();
    var right = new Array();
    var pivot = arr[0][key];//分割值
    var pivotObj = arr[0];//存储值

    if(dir===null){//升序
        for (var i = 1; i < arr.length; i++) {
            arr[i][key] < pivot ? left.push(arr[i]): right.push(arr[i]);
        }
    }else{//降序
        for (var i = 1; i < arr.length; i++) {
            arr[i][key] > pivot ? left.push(arr[i]): right.push(arr[i]);
        }
    }
    return sortObj(left,key,dir).concat(pivotObj, sortObj(right,key,dir));
}
var employees=[]
employees[0]={name:"George", age:32, retiredate:"March 12, 2014"}
employees[1]={name:"Edward", age:17, retiredate:"June 2, 2023"}
employees[2]={name:"Christine", age:58, retiredate:"December 20, 2036"}
employees[3]={name:"Sarah", age:62, retiredate:"April 30, 2020"}
console.log(sortObj(employees,"age"));
/*
[ { name: "Edward", age: 17, retiredate: "June 2, 2023" },
{ name: "George", age: 32, retiredate: "March 12, 2014" },
{ name: "Christine", age: 58, retiredate: "December 20, 2036" },
{ name: "Sarah", age: 62, retiredate: "April 30, 2020" } ]*/

console.log(sortObj(employees,"age","desc"));
/*
[ { name: "Sarah", age: 62, retiredate: "April 30, 2020" },
{ name: "Christine", age: 58, retiredate: "December 20, 2036" },
{ name: "George", age: 32, retiredate: "March 12, 2014" },
{ name: "Edward", age: 17, retiredate: "June 2, 2023" } ]*/



            
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
  • 上一篇:没有了
  • 下一篇:没有了
未上传头像