E5中数组的方法

数组方法里的函数一般接收3个参数:数组元素、索引、数组本身;数组的方法都不会影响他本身。
①forEach()遍历数组,无返回值

1
2
3
var data=[1,2,3,4,5];
var sum=0;
sum=data.forEach(function(v){sum+=v;});

②map()遍历数组,返回新数组不改变原数组

1
2
3
var data=[1,2,3,4,5,,];
var j=0;
j=data.map(function(v,i){return v * v}); //虽然在输出j的时候最后一个没定义的没显示,但是他仍然存在,这里的length值是6。

③filter()遍历数组,传递的函数是用来逻辑判断的,返回true或false,判断成立则添加到返回的数组中,他会跳过稀疏数组中缺少的元素,返回到数组始终是稠密的

1
2
3
var data=[1,2,3,4,5,undefined,undefined,,0,9];
var f=0
f=data.filter(function(v){return v>0;}); //[1,2,3,4,5,9]

④every()遍历数组、逻辑判断,返回true或false,这个方法相当于“针对所有”,全部判断成立才返回true,一个不成立终止判断返回false。

1
2
3
var data=[1,2,3,4,5,0];
var j=0;
j=data.every(function(v,i){return v>0;});

⑤some()遍历数组、逻辑判断,返回true或false,这个方法相当于“存在或至少一个”,一个判断成立终止判断返回true,全部都不成立终止判断返回false。

1
2
3
var data=[-1,-2,-3,-4,-5,0];
var j=0;
j=data.some(function(v){return v>0;});

⑥reduce()遍历数组、将数组元素进行组合(如加减乘除)生成单个值;接收两个参数1.执行的函数 2.初始化函数的值

1
2
3
var data=[1,2,3,4,5,0];
var j=0;
j=data.reduce(function(x,y){return x+y;},2); \/\/17

注意:在使用空数组时并且省略第二个参数,也就是上面例子中第二个参数(2)才会导致类型错误。另外,如果数组只有一个元素,就只是简单返回原来的值

⑦reduceRight()用途和reduce差不多都是操作两个元素加减乘除、也可指定可选参(初始值),只是他是从右到左处理数组(从高索引到低索引)

1
2
3
4
var data=[4,5];
var j=0;
j=data.reduceRight(function(x,y){return x-y});
console.log(j); //输出1 如果把x和y互换位置会得到-1 这是因为高索引先作为参数传入

⑧indexOf和lastIndexOf()搜索数组中具有给定值的元素,返回找到的元素的索引,如果没有找到返回-1。前者的从头开始搜索,后者则相反。和其他方法不同。他还接收第二个参数,指定数组的索引(从哪开始搜索)

1
2
3
var data=[4,5,9,5,15,14,12];
var j=data.lastIndexOf(6)
console.log(j); //未找到,返回-1