js 之filter和sort方法 练习

2017-08-15  本文已影响0人  赵仝

练习代码:

//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
上一篇 下一篇

猜你喜欢

热点阅读