forEach()
forEach() 方法对数组的每个元素执行一次给定的函数。
语法
arr.forEach(callback(currentValue [, index [, array]])[, thisArg])
callback:表示执行的函数;
currentValue:表示当前执行的元素;
index:可选,表示执行元素的索引;
array:可选,表示执行的数组;
thisArg:可选,当执行回调函数 callback 时,用作 this 的值。
返回值:undefined
用法
forEach()方法按升序为数组中含有效值的每一项执行一次 callback 函数,那些已删除或者未初始化的项将被跳过。
forEach() 遍历的范围在第一次调用 callback 前就会确定。如果已经存在的值被改变,则传递给 callback 的值是 forEach() 遍历到他们那一刻的值。
forEach()与map()不同的是forEach总是返回undefined。
forEach() 不会直接改变调用他的数组,但数组能被callback函数改变。
注:除程序异常外,forEach()无法终止或跳出。
如果需要对数组元素进行判断,可以使用for循环、for...in、every()、some()等方法。
示例
- 输出数组的元素
var arr=[1,3,5,,9];
arr.forEach(function(item){
console.log(item);
})
//输出结果
//1
//3
//5
//9
//注意,数组中元素5和元素9之间空缺的元素未被输出
map()
map() 方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。
语法
var new_arr=arr.map(function callback(item[,index[,arr]]){
//return值组成新数组
}[, thisArg])
callback:生成新数组的函数。
item:表示当前操作的元素。
index:可选,表示当前操作元素的下标。
arr:可选,表示当前操作的数组。
thisArg:执行 callback 函数时值被用作this。
返回值:返回值组成新数组。
用法
map 方法会给原数组中的每个元素都按顺序调用一次 callback 函数。callback 每次执行后的返回值(包括 undefined)组合起来形成一个新数组。
map 不修改调用它的原数组本身(当然可以在 callback 执行时改变原数组)。
map 方法处理数组元素的范围是在 callback 方法第一次调用之前就已经确定了。调用map方法之后追加的数组元素不会被callback访问。
示例
- 复制数组
var arr=[1,3,5,,9];
var arr1=arr.map(function(item){
return item;
})
console.log(arr1);
//输出结果为[1, 3, 5, empty, 9]
//map可以复制数组中的空元素
- 返回一个新数组,新数组元素值为原来元素值的开方
var arr = [1,4,9,16];
arr = arr.map(Math.sqrt);
console.log(arr);
//结果为[1,2,3,4]