node,javascript数组排序,去重复,并集,交集,差集
<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。
- 上一篇:没有了
- 下一篇:没有了