数组内置的一些处理方法

在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.mapspa

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

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.everycode

这个方法会根据传入的参数最后返回的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.someblog

与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的方式来使用在字符串上

相关文章
相关标签/搜索