数组内置的一些处理方法

在JS中个,数组是一个Array对象,有它自己内置的方法,今天来说一部分,可以去除循环,来实现对数组的遍历并且进行一定的操作

1.forEach

数组遍历方法,用在数组的遍历上,参数是一个回调函数,函数会传入数组的每一个数值,如果数组索引被修改了,那么遍历会继续沿着索引向下。例如:

1 var array = [1,2,3,4,5];
2 array.forEach(function(data){
3     console.log(data);//1,2,3,5
4     if(data==3){
5         a = array.shift();//shift函数移除数组的第一个元素
6         alert(a);//弹出1
7     }
8 });

2.map

这个方法会返回一个新数组,这个数组里面的值是回调函数里面放回的值。

var array = [1,2,3,4,5];
array = array.map(function(data){//map函数返回一个数组,数组中的每个元素都是回调函数放回的值
    return data*2;
});
console.log(array);//2,4,6,8,10

3.every

这个方法会根据传入的参数最后返回的boolean值来判断,如果传入的参数的值都满足了回调函数里面的要求,即都返回了true的话,那么every函数也返回true,只要有一个不满足,返回了false的话,那么最后every函数返回的结果就是false

var array = [1,2,3,4,5];
var flag = array.every(function(currentValue){//测试数组中的每一个值是否都满足条件,即都返回true
    if(currentValue<6){
        return true;
    }
});
console.log(flag);//true

4.some

与every函数对应的方法是some,some只需要求传入的参数有一个满足要求,即只需要有一个返回的是true,那么这个函数返回的就是true,要想函数返回的是false,就要求传入的参数都不满足回调函数里的要求,即都是false

var array = [1,2,3,4,5];
var a = array.some(function(currentValue){//只要有满足条件的,就是true
    return currentValue>4
});
console.log(a);//true

5.filter

这个函数是一个过滤器,会将所有满足条件的函数返回到一个新的数组中,原数组不变,新数组中其实是返回了原数组中满足条件的元素

var array = [1,2,3,4,5];

array = array.filter(function(index) {//返回一个新数组,数组内的元素是满足函数得到的元素
    if(index>=4){
        return index;
    }
});
console.log(array);//4,5

6.find

返回第一个满足条件的元素

var array = [1,2,3,4,5];
var a=array.find(function(currentValue){//返回第一个满足条件的元素
    if(currentValue<3){
        return currentValue;
    };
});
console.log(a);//1

7.findIndex

这个方法和find方法差不多,只是findIndex方法返回的是第一个满足元素的下标

var array = [1,2,3,4,5];
var a=array.findIndex(function(currentValue){//返回第一个满足条件的元素的索引
    if(currentValue<3){
        return currentValue;
    };
});
console.log(a);//0

8.reduce

这个函数实现了对数组遍历和累加,累乘的功能

var array = [1,2,3,4];
var a = array.reduce(function(accumulator,currentValue){//从左至右遍历数组,第一个参数是在第一次传参时是数组的第一个值,之后为上一次回调函数返回的值,第二参数为当前值,从2个位置开始。
    return accumulator*currentValue;//将数组累乘;
});

上面的代码实现了

var array = [1,2,3,4];

function reduce(){
    for(var i=0,result=1;i<array.length;i++){
        result*=array[i];
    }
    return result;
}

但是用reduce没有了循环。

9.reduceRight

这个函数实现的功能和reduce没什么区别,只是reduce从左往右,而reduceRight从右往左

最后说一下,其实以上方法是可以让字符串通过call方法来调用的,功能也是一样的

var str = "Hello World!";

var a = Array.prototype.reduceRight.call(str,function(accumulator,currentValue){//从左至右遍历数组
    return accumulator+currentValue;
});
console.log(a);

输出就是什么呢?

没错,就是!dlroW olleH

其他的方法也可以通过call的方式来使用在字符串上

posted @ 2017-09-28 20:19  JavaScriptBUG  阅读(202)  评论(0编辑  收藏  举报