JavaScript教程:数组扩展方法-forEach()、map()、filter()、reduce()、some()、every()

Array.forEach()

提示:相当于 for 循环数组

将原数组的每一项元素,传入 回调函数

forEach() 返回值:无返回值

回调函数

参数:

  • value:当前元素
  • index:当前索引
  • array:数组本身

返回值:无

例子

var number = ["1", "31", "311", "43", "23"];
var txt = "";
number.forEach(myFunction);
console.log(txt)
function myFunction(value, index, array) {
    txt = txt + value + "<br>";
}

Array.map()

将原数组的每一项元素按照规则进行改变,将所有改变的结果组合成一个新数组

解释: 将原数组的每一项元素,传入 回调函数 ,将 回调函数 的 返回值 组合成一个 新数组

  • 不会更改原始数组

map() 返回值:新数组

回调函数

参数:

  • value:当前元素
  • index:当前索引
  • array:数组本身

返回值:必须有返回值,将 返回值 组合成一个 新数组

例子

var numbers1 = [45, 4, 9, 16, 25];
var numbers2 = numbers1.map(myFunction);
console.log(numbers2);

function myFunction(value, index, array) {
  return value * 4;
}

Array.filter()

过滤数组,把符合规则的元素组合成一个新数组

解释: 将原数组的每一项元素,传入 回调函数 ,如果 回调函数 返回 true ,将该元素放到新数组中(表示符合条件)

  • 不改变原数组

filter() 返回值:过滤出来的新数组

回调函数

参数:

  • value:当前元素
  • index:当前索引
  • array:数组本身

返回值: true 或 false

例子

var numbers = [45, 4, 9, 16, 25];
var over18 = numbers.filter(myFunction);

function myFunction(value, index, array) {
  return value > 18;
}
console.log(over18);

Array.reduce()

详见:
https://www.malaoshi.top/show_1IX7TnITT5iK.html

Array.some()

遍历数组,判断元素是否符合判断条件,若 有一个 符合就返回 true,若都不符合则返回 false,匿名函数的返回值就是判断条件

解释

  • 每次遍历都会执行一次匿名函数,如果有一个匿名函数的返回值为 true,即有一个符合条件,那么 some()会返回 true
  • 若都为 false,才会返回 false
  • 不改变原数组

some() 返回值:布尔值 true 或 false

匿名函数

参数:

  • item:每一项元素

返回值:布尔值 true 或 false

例子

李雷的各科成绩,如果有一科超过90,就有单科优秀奖

const scoreArr = [77,58,88,92]
const res = scoreArr.some( item => item >= 90)
if(res){
    console.log("有奖励")
}else{
    console.log("没奖励")
}

Array.every()

遍历数组,判断元素是否符合判断条件,如果 都符合 则返回 true,否则返回 false,匿名函数的返回值就是判断条件

解释

  • 每次遍历都会执行一次匿名函数,如果所有匿名函数的返回值都为true,也就是所有元素都符合判断条件,那么 every()会返回 true
  • 只要有一个为 false,即只要有一个不符合,就会返回 false
  • 不改变原数组

every() 返回值:布尔值 true 或 false

匿名函数

函数:

  • item:每一项元素

返回值:布尔值 true 或 false

例子

李雷的各科成绩,都超过90,就获得奖学金

const scoreArr = [77,58,88,92]
const res = scoreArr.every( item => item >= 90)
if(res){
    console.log("有奖学金")
}else{
    console.log("没奖学金")
}

参考:
https://blog.csdn.net/qq_43968060/article/details/114392313
https://segmentfault.com/a/1190000022647129


原文出处:/show_1IX3Np9wqkZe.html