首页 > 编程语言 > 详细

数组迭代(forEach, map,filter,reduce,reduceRight,every,some,indexOf,lastIndexOf)

时间:2020-11-09 18:01:11      阅读:29      评论:0      收藏:0      [点我收藏+]

1. Array.forEach()

forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。但对于空数组是不会执行回调函数的。
var txt = "";
var numbers = [45, 4, 9, 16, 25];
numbers.forEach(myFunction);

function myFunction(value, index, array) {
  txt = txt + value + "<br>"; 
}
//txt = "45<br>4<br>9<br>16<br>25<br>"
参数 描述
value 必需。当前元素
index 可选。当前元素的索引值。
array 可选。当前元素所属的数组对象。

没有返回值,本质上等同于 for 循环,对每一项执行 function 函数。即map是返回一个新数组,原数组不变,forEach 是改变原数组。


2. Array.map()

map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。map() 方法按照原始数组元素顺序依次处理元素。
  • map()方法通过对每个数组元素执行函数来创建新数组。
  • map()方法不会对没有值的数组元素执行函数。
  • map()方法不会更改原始数组。
//这个例子将每个数组值乘以2:
var numbers1 = [45, 4, 9, 16, 25];
var numbers2 = numbers1.map(myFunction);

function myFunction(value, index, array) {
  return value * 2;
}
//numbers2 = [90, 8, 18, 32, 50]
参数 描述
value 必需。当前元素
index 可选。当前元素的索引值。
array 可选。当前元素所属的数组对象。

3. Array.filter()

filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
  • filter()不会对空数组进行检测。
  • filter()不会改变原始数组。
var numbers = [45, 4, 9, 16, 25];
var over18 = numbers.filter(myFunction);

function myFunction(value, index, array) {
  return value > 18;
}
// over18 = [45, 25]
参数 描述
value 必需。当前元素
index 可选。当前元素的索引值。
array 可选。当前元素所属的数组对象。

4. Array.reduce()

reduce() 方法在每个数组元素上运行函数,以生成(减少它)单个值。方法在数组中从左到右工作。另请参见 reduceRight()。
  • reduce() 方法不会改变原始数组。
var numbers1 = [45, 4, 9, 16, 25];
var sum = numbers1.reduce(myFunction);

function myFunction(total, value, index, array) {
  return total + value;
}
//sum = 99

//reduce() 方法能够接受一个初始值:
var numbers1 = [45, 4, 9, 16, 25];
var sum = numbers1.reduce(myFunction, 100);

function myFunction(total, value) {
  return total + value;
}
//sum = 199 
参数 描述
total 必需。初始值, 或者计算结束后的返回值。
value 必需。当前元素
index 可选。当前元素的索引值。
array 可选。当前元素所属的数组对象。

5. Array.reduceRight()

reduceRight()和reduce()功能一样,不同点在于reduceRight()是从数组右到左开始执行

6. Array.every()

every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供)。every() 方法使用指定函数检测数组中的所有元素:如果数组中检测到有一个元素不满足,则整个表达式返回 false,且剩余的元素不会再进行检测。如果所有元素都满足条件,则返回 true。
  • every()不会对空数组进行检测。
  • every()不会改变原始数组。
var numbers = [45, 4, 9, 16, 25];
var allOver18 = numbers.every(myFunction);

function myFunction(value, index, array) {
  return value > 18;
}
//allOver18 = false
参数 描述
value 必需。当前元素
index 可选。当前元素的索引值。
array 可选。当前元素所属的数组对象。

7. Array.some()

some() 方法用于检测数组中的元素是否满足指定条件(函数提供)。some() 方法会依次执行数组的每个元素:如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。如果没有满足条件的元素,则返回false。
  • some()不会对空数组进行检测。
  • some()不会改变原始数组。
var numbers = [45, 4, 9, 16, 25];
var someOver18 = numbers.some(myFunction);

function myFunction(value, index, array) {
  return value > 18;
}
//someOver18 = true
参数 描述
value 必需。当前元素
index 可选。当前元素的索引值。
array 可选。当前元素所属的数组对象。

8. Array.indexOf()

方法可返回数组中某个指定的元素位置。该方法将从头到尾地检索数组,看它是否含有对应的元素。开始检索的位置在数组 start 处或数组的开头(没有指定 start 参数时)。如果找到一个 item,则返回 item 的第一次出现的位置。开始位置的索引为 0。如果在数组中没找到指定元素则返回 -1。
//array.indexOf(item, start)
var fruits = ["Apple", "Orange", "Apple", "Mango"];
var a = fruits.indexOf("Apple");
//a = 0;
参数 描述
item 必需。要检索的项目。
start 可选。从哪里开始搜索。负值将从结尾开始的给定位置开始,并搜索到结尾。

9. Array.lastIndexOf()

Array.lastIndexOf() 与 Array.indexOf() 类似,但是从数组结尾开始搜索。返回它最后出现的位置。

10. Array.find()

find() 方法返回通过测试(函数内判断)的数组的第一个元素的值。find() 方法为数组中的每个元素都调用一次函数执行:当数组中的元素在测试条件时返回 true 时, find() 返回符合条件的元素,之后的值不会再调用执行函数。如果没有符合条件的元素返回 undefined.
  • find()对于空数组,函数是不会执行的。
  • find()并没有改变数组的原始值。
var numbers = [4, 9, 16, 25, 29];
var first = numbers.find(myFunction);

function myFunction(value, index, array) {
  return value > 18;
}
//first = 25;
参数 描述
value 必需。当前元素
index 可选。当前元素的索引值。
array 可选。当前元素所属的数组对象。

11. Array.findIndex()

findIndex() 方法返回传入一个测试条件(函数)符合条件的数组第一个元素位置。findIndex() 方法为数组中的每个元素都调用一次函数执行:当数组中的元素在测试条件时返回 true 时, findIndex() 返回符合条件的元素的索引位置,之后的值不会再调用执行函数。如果没有符合条件的元素返回 -1.
  • findIndex()对于空数组,函数是不会执行的。
  • findIndex()并没有改变数组的原始值。
var numbers = [4, 9, 16, 25, 29];
var first = numbers.findIndex(myFunction);

function myFunction(value, index, array) {
  return value > 18;
}
//first = 3;
参数 描述
value 必需。当前元素
index 可选。当前元素的索引值。
array 可选。当前元素所属的数组对象。

数组迭代(forEach, map,filter,reduce,reduceRight,every,some,indexOf,lastIndexOf)

原文:https://www.cnblogs.com/bangeshiyiren/p/13949341.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!