练习代码:
//js 中的filter用于把数组的某些元素过滤掉,然后返回剩下的元素
var arr1=[1,2,3,4,5,6,7,8,9,10];
var arr11=arr1.filter(x=>{
return x%2==0;
});
console.log(arr11);
//去掉数组中为空的元素
var arr2=['zhaotong','',null,null, undefined, 'C', ' '];
var arr22=arr2.filter(x=>{
return x&&x.trim();
});
console.log(arr22);//[ 'zhaotong1', 'zhaotong2', 'zhaotong3' ]
//filter()接收的回调函数,其实可以有多个参数。
//通常我们仅使用第一个参数,表示Array的某个元素。回调函数还可以接收另外两个参数,表示元素的位置和数组本身:
var arr3=['zhaotong1','zhaotong2','zhaotong3'];
var arr33=arr3.filter((value,index,array)=>{
console.log(value);
console.log(index);
console.log(array);
});
//利用filter筛选出100以内的素数
var arr4=new Array();
for(var i=0;i<100;i++){
arr4.push(i);
}
var arr44=arr4.filter((value,index,array)=>{
for(var i=2;i<value;i++){
if(value%i==0){
break;
}
}
return value==i?true:false;
});
console.log(arr44);
// js 通常规定,对于两个元素x和y,如果认为x < y,则返回-1,如果认为x == y,则返回0,如果认为x > y,则返回1,
//这样,排序算法就不用关心具体的比较过程,而是根据比较结果直接排序。
var arr5=['C','B','A','CC','a','c'];
var arr55=arr5.sort();
var arr6=[2,12,4,5,8,11,1];
var arr66=arr6.sort();
// 这是因为Array的sort()方法默认把所有元素先转换为String再排序。
console.log(arr55);// [ 'A', 'B', 'C', 'CC', 'a', 'c' ]
console.log(arr66);// [ 1, 11, 12, 2, 4, 5, 8 ]
//对数组按照从小到大排序
var arr7=[112,12,45,6,612,21,23,6];
var arr77=arr7.sort((x,y)=>{
if(x<y){
return -1;
}else if(x==y){
return 0;
}else{
return 1;
}
});
console.log(arr77);
//对数组进行从大到小排序
var arr777=arr7.sort((x,y)=>{
if(x<y){
return 1;
}else if(x==y){
return 0;
}else{
return -1;
}
});
console.log(arr777);
//对字符串忽略大小写排序
var arr88=['zhaotong','Abc','sd','Qas'];
var arr888=arr88.sort((x,y)=>{
var a=x.toUpperCase();
var b=y.toUpperCase();
if(x<y){
return -1;
}
if(x>y){
return 1;
}
return 0;
});
console.log(arr888);
//sort()方法会直接对Array进行修改,它返回的结果仍是当前Array:
var arr9=['A','B','D','C'];
var arr99=arr9.sort();
console.log(arr99==arr9);// true