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" } ]*/
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: VC++ 大文件读写(大于4G)
- 下一篇: PHP 程序运行过程
