hugh 的个人博客

Array对象 --ES5学习笔记(二)

1、forEach方法

Array.prototype.forEach ( callbackfn [ , thisArg ] )

1)如果提供了一个 thisArg 参数,它会被当作 this 值传给每个 callbackfn 调用。如果没提供它,用 undefined 替代。

2)callbackfn参数列表 value,index,array

value:每次遍历的当前值

index:数组下标

array:当前数组

var data = [3,2,5,6];

data.forEach(function(value,i,c){
data[i] = value+1;
console.log(c)
})

console.log(data)

--输出结果

[4, 2, 5, 6]
[4, 3, 5, 6]
[4, 3, 6, 6]
[4, 3, 6, 7]

[4, 3, 6, 7]

对 forEach 的调用不直接更改对象,但是对 callbackfn 的调用可能更改对象。

2)map方法

Array.prototype.map ( callbackfn [ , thisArg ] )

将调用的数组的每个元素传个指定函数,并返回一个数组。并不会改变原有数组

参数及调用方式同forEach

callbackfn应该有返回值

 

var data = [4,3,5,6];

var dclone = data.map(function(value,i,c){
return value+1;
})

console.log(dclone)
console.log(data)

 

结果:[5, 4, 6, 7]

[4, 3, 5, 6]

3、filter

Array.prototype.filter ( callbackfn [ , thisArg ] )

filter返回指定数组的一个子集。 参数同foreach

callbackfn需返回一个布尔类型的值

var data = [4,3,5,6];

var dfilter = data.filter(function(value,i,c){
return value>4;
})

console.log(dfilter)
console.log(data)

 

结果:

[5, 6]

[4, 3, 5, 6]

4、some和array

用于进行数组的逻辑判断,some即存在,every即所有

在空数组上调用,some返回false;every返回true

5、reduce和reduceRight

Array.prototype.reduce ( callbackfn [ , initialValue ] )

参数列表

callbackfn

       previousValue :(initialValue 的值或上次调用 callbackfn 的返回值

       currentValue:当前元素的遍历对象

       index:当前元素下标

       array:遍历的数组

initialValue:初始值

如果为 reduce 调用提供了一个 initialValue,则 previousValue 将等于 initialValue 并且 currentValue 将等于数组的首个元素值。

如果没提供 initialValue,则 previousValue 将等于数组的首个元素值并且 currentValue 将等于数组的第二个元素值。

如果数组里没有元素并且没有提供 initialValue,则抛出一个 TypeError 异常

var data = [4,5,6,7];

console.log(data.reduce(function(a,b){return a+b;}));

console.log(data.reduce(function(a,b){return a+b;},10));

结果:

22

32

reduceRight处理按索引从高到低处理

6、indexOf 和 lastIndexOf

Array.prototype.indexOf ( searchElement [ , fromIndex ] )

用于查找数组中是否存在指定的值,不存在返回-1

fromIndex:指定开始搜索的下标


标题:Array对象 --ES5学习笔记(二)
作者:hugh0524
地址:https://blog.uproject.cn/articles/2016/06/22/1466588778216.html