forEach
功能:
循环遍历数组中的每一项,只能遍历数组
//写法
数组对象.forEach(function(参数变量名1,参数变量名2,参数变量名3)){
// 做一些操作,forEach 没有返回值,返回值为 undefined
})
特点:
callback函数, 为数组中每个元素执行的函数,该函数接受三个参数
* 变量参数名1 必选,表示的是数组中的项值(数组当前项的值)
* 变量参数名2 可选,表示的是索引(数组当前项的索引)
* 变量参数名3 可选,表示原数组(数组对象本身)
返回值:
undefined ,并且总是返回undefined值,不会修改原数组
使用场景:
邮箱,qq,购物车,列表,全选,删除所选项邮件等, todolist
var arr = [1,2,3,4];
var sum =0;
arr.forEach(function(value,index,array){
//获取数组的每一项,并对其进行操作
array[index] == value; //结果为true
sum+=value;
});
console.log(sum); //结果为 10
map
功能:
循环遍历数组中的每一项,只能遍历数组
//写法
数组对象.map(callback(参数名1,参数名2,参数名3){
//对数组做一些操作
})
特点:
map使用方法与forEach类似,callback 回调函数接受的参数意义与forEach 一致
必须要有返回值,如果不给return,他就会返回一个undefined
return 的返回值是什么,相当于给这个新增的数组添加新的值,但他不会影响原数组,只是将原来的数组拷贝一份,把拷贝的数组项进行更改,支持链式调用
使用场景:
拷贝原数组,对数组的每一项进行操作,改变一些东西
let array = [1, 2, 3, 4, 5];
let newArray = array.map((item) => {
return item * item;
})
console.log(newArray) // [1,4,9,16,25]
注: 为了遍历数组,我们需要创建变量 i
指向数组的长度,还需要定义计数器的修改
这样做容易出错,当多层for循环嵌套时,不仅阅读上困难,代码也很难理解
不得不跟踪for循环中的每一步,确保遍历了数组的每一个元素
forEach 和 map 等迭代器函数就避免了此类问题,简化了操作