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)

关注点

  1. forEach() 被调用时,不会改变原数组(即调用它的数组)
  2. 遍历中无法中断,直到数组被遍历完毕
  3. arr.forEach(callback);callback 无返回值/永远返回undefined
  4. arr.forEach(); 这个函数本身也无返回值/返回值是undefined
  5. 灵活使用 第二参数,进行this的绑定,这个往往在封装功能函数的时候起到很大作用

every()函数

这个函数的目的,是测试数组内的每个元素是否都能通过指定的函数的测试,如果都通过了那就返回true,否则就返回false

示例代码

# 1 检查数组里面的每个元素是否符合条件

let arr = [1,2,3];
// 检查arr中的每个元素是不是 都大于2
let 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)

关注点

  1. arr.every(callback);中callback 如果没有指定返回值,默认返回 undefined,也就是 false,所以callback只会被执行依次
  2. arr.every() 函数本身返回 Boolean值 true/false

some()函数

和 every()函数类似,只不过这个是测试数组中是否有某个元素通过测试条件,而不是全部

示例代码

# 1 检查数组里面的元素是否有符合条件

// 比如,判断某个班的学生是否有人能考上 981;就是这个人的摸底成绩大于600分
let arr = [{
  name:'章三‘,
  grade:500
},{
  name:'小明',
  grade:620
},{
  name:'小许',
  grade:320
}]
let res = arr.some(function(stu){
  return stu.grade>600;
})
console.log(res);// true,说明这个班是有希望的,但是不是每个人都有希望

关注点

  1. 注意callback的返回,返回true的时候循环停止,这个和 every 相反

every()对比some()函数

这2个函数其实是互补函数,
区别是:一个是&&运算一个是||运算
every --> arr[1]&&arr[2]&&arr[..]
some--> arr[1]||arr(2)||arr[..]
共同点:2个都是对数组进行检查,返回值都是,boolean,表示数组是否通过测试

无名小卒
1.3k 声望20 粉丝

没有一瞬间的脱胎换骨,编程是一次次的试探,也是一次且行且至的寻觅