forEach()
函数
示例代码
#1 基础使用
let arr = [1,2,3];arr.forEach(function(currentValue){ console.log(currentValue);// 每次输出 1,2,3})
#2 遍历的时候获取角标
let arr = [1,2,3];arr.forEach(function(currentValue,index){ console.log(currentValue);// 每次输出 1,2,3 console.log(index);// 每次输出,0,1,2})
#3 代入被遍历的数组本身
let arr = [1,2,3];arr.forEach(function(currentValue,index,originArr){ console.log(currentValue);// 每次输出 1,2,3 console.log(index);// 每次输出,0,1,2 console.log(originArr);// 每次输出 [1,2,3]})
#4 绑定this
let arr = [1,2,3];let obj = {age:18}arr.forEach(function(currentValue,index,originArr){ console.log(currentValue);// 每次输出 1,2,3 originArr[index] = this.age+currentValue},age)
关注点
- forEach() 被调用时,不会改变原数组(即调用它的数组)
- 遍历中无法中断,直到数组被遍历完毕
- arr.forEach(callback);callback 无返回值/永远返回undefined
- arr.forEach(); 这个函数本身也无返回值/返回值是undefined
- 灵活使用 第二参数,进行this的绑定,这个往往在封装功能函数的时候起到很大作用
every()
函数
这个函数的目的,是测试数组内的每个元素是否都能通过指定的函数的测试,如果都通过了那就返回true,否则就返回false
示例代码
# 1 检查数组里面的每个元素是否符合条件
let arr = [1,2,3];// 检查arr中的每个元素是不是 都大于2let res = arr.every(function(currentValue){ return currentValue>2})console.log(res); // 输出 false,而且只遍历了一次
# 2 无条件遍历数组
let arr = [1,2,3];arr.every(function(currentValue,index){ console.log(currentValue);// 依次输出1,2,3 return true;// 这里一定要写,并且还要返回true})
# 3 指定回调函数中的this
let arr = [1,2,3];let obj = { name:'Tom' }arr.every(function(currentValue,index){ console.log(this); // this--> obj console.log(this.name); // Tom return true;},obj)
关注点
- arr.every(callback);中callback 如果没有指定返回值,默认返回 undefined,也就是 false,所以callback只会被执行依次
- arr.every() 函数本身返回 Boolean值 true/false