欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

松软科技web课堂:JavaScript 数组迭代方法

程序员文章站 2022-12-22 07:50:52
数组迭代方法对每个数组项进行操作,听着挺高深,其实,就是对数组对象一次性逐一进行一种操作的一种叫法。(文章来源:www.sysoft.net.cn,加v:15844800162深度交流) Array.forEach() forEach() 方法为每个数组元素调用一次函数(回调函数)。 实例 var ......

数组迭代方法对每个数组项进行操作,听着挺高深,其实,就是对数组对象一次性逐一进行一种操作的一种叫法。(文章来源:www.sysoft.net.cn,加v:15844800162深度交流)

array.foreach()

foreach() 方法为每个数组元素调用一次函数(回调函数)。

实例

var txt = "";
var numbers = [45, 4, 9, 16, 25];
numbers.foreach(myfunction);

function myfunction(value, index, array) {
  txt = txt + value + "<br>"; 
}

注释:该函数接受 3 个参数:

  • 项目值
  • 项目索引
  • 数组本身

上面的例子只用了 value 参数。这个例子可以重新写为:

实例

var txt = "";
var numbers = [45, 4, 9, 16, 25];
numbers.foreach(myfunction);

function myfunction(value) {
  txt = txt + value + "<br>"; 
}

所有浏览器都支持 array.foreach(),除了 internet explorer 8 或更早的版本:

松软科技web课堂:JavaScript 数组迭代方法

 

array.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;
}

请注意,该函数有 3 个参数:

  • 项目值
  • 项目索引
  • 数组本身

当回调函数仅使用 value 参数时,可以省略索引和数组参数:

实例

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

function myfunction(value) {
  return value * 2;
}

所有浏览器都支持 array.map(),除了 internet explorer 8 或更早的版本:

松软科技web课堂:JavaScript 数组迭代方法

 

array.filter()

filter() 方法创建一个包含通过测试的数组元素的新数组。

这个例子用值大于 18 的元素创建一个新数组:

实例

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

function myfunction(value, index, array) {
  return value > 18;
}

请注意此函数接受 3 个参数:

  • 项目值
  • 项目索引
  • 数组本身

在上面的例子中,回调函数不使用 index 和 array 参数,因此可以省略它们:

实例

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

function myfunction(value) {
  return value > 18;
}

array.reduce()

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;
}

请注意此函数接受 4 个参数:

  • 总数(初始值/先前返回的值)
  • 项目值
  • 项目索引
  • 数组本身

上例并未使用 index 和 array 参数。可以将它改写为:

实例

var numbers1 = [45, 4, 9, 16, 25];
var sum = numbers1.reduce(myfunction);

function myfunction(total, value) {
  return total + value;
}

 

reduce() 方法能够接受一个初始值:

实例

var numbers1 = [45, 4, 9, 16, 25];
var sum = numbers1.reduce(myfunction, 100);

function myfunction(total, value) {
  return total + value;
}

 

所有浏览器都支持 array.reduce(),除了 internet explorer 8 或更早的版本:

松软科技web课堂:JavaScript 数组迭代方法
array.every()
array.reduceright()

reduceright() 方法在每个数组元素上运行函数,以生成(减少它)单个值。

reduceright() 方法在数组中从左到右工作。另请参见 reduce()。

reduceright() 方法不会减少原始数组。

这个例子确定数组中所有数字的总和:

实例

var numbers1 = [45, 4, 9, 16, 25];
var sum = numbers1.reduceright(myfunction);

function myfunction(total, value, index, array) {
  return total + value;
}

 

请注意此函数接受 4 个参数:

  • 总数(初始值/先前返回的值)
  • 项目值
  • 项目索引
  • 数组本身

上例并未使用 index 和 array 参数。可以将它改写为:

实例

var numbers1 = [45, 4, 9, 16, 25];
var sum = numbers1.reduceright(myfunction);

function myfunction(total, value) {
  return total + value;
}

 

所有浏览器都支持 array.reduceright(),除了 internet explorer 8 或更早的版本:

松软科技web课堂:JavaScript 数组迭代方法

every() 方法检查所有数组值是否通过测试。

这个例子检查所有数组值是否大于 18:

实例

var numbers = [45, 4, 9, 16, 25];
var allover18 = numbers.every(myfunction);

function myfunction(value, index, array) {
  return value > 18;
}

 

请注意此函数接受 3 个参数:

  • 项目值
  • 项目索引
  • 数组本身

如果回调函数仅使用第一个参数(值)时,可以省略其他参数:

实例

var numbers = [45, 4, 9, 16, 25];
var allover18 = numbers.every(myfunction);

function myfunction(value) {
  return value > 18;
}

 

所有浏览器都支持 array.every(),除了 internet explorer 8 或更早的版本:

松软科技web课堂:JavaScript 数组迭代方法

array.some()

some() 方法检查某些数组值是否通过了测试。

这个例子检查某些数组值是否大于 18:

实例

var numbers = [45, 4, 9, 16, 25];
var someover18 = numbers.some(myfunction);

function myfunction(value, index, array) {
  return value > 18;
}

 

请注意此函数接受 3 个参数:

  • 项目值
  • 项目索引
  • 数组本身

所有浏览器都支持 array.some(),除了 internet explorer 8 或更早的版本:

松软科技web课堂:JavaScript 数组迭代方法

array.indexof()

indexof() 方法在数组中搜索元素值并返回其位置。

注释:第一个项目的位置是 0,第二个项目的位置是 1,以此类推。

实例

检索数组中的项目 "apple":

var fruits = ["apple", "orange", "apple", "mango"];
var a = fruits.indexof("apple");

 

array.indexof(item, start)

 


如果项目多次出现,则返回第一次出现的位置。如果未找到项目,array.indexof() 返回 -1。

array.lastindexof()

array.lastindexof() 与 array.indexof() 类似,但是从数组结尾开始搜索。

实例

检索数组中的项目 "apple":

var fruits = ["apple", "orange", "apple", "mango"];
var a = fruits.lastindexof("apple");

 

所有浏览器都支持 array.lastindexof(),除了 internet explorer 8 或更早的版本:


松软科技web课堂:JavaScript 数组迭代方法

 

array.find()

find() 方法返回通过测试函数的第一个数组元素的值。

这个例子查找(返回)大于 18 的第一个元素的值:

实例

var numbers = [4, 9, 16, 25, 29];
var first = numbers.find(myfunction);

function myfunction(value, index, array) {
  return value > 18;
}

 

请注意此函数接受 3 个参数:

  • 项目值
  • 项目索引
  • 数组本身

 

array.findindex()

findindex() 方法返回通过测试函数的第一个数组元素的索引。

这个例子查找大于 18 的第一个元素的索引:

实例

var numbers = [4, 9, 16, 25, 29];
var first = numbers.findindex(myfunction);

function myfunction(value, index, array) {
  return value > 18;
}

 

请注意此函数接受 3 个参数:

  • 项目值
  • 项目索引
  • 数组本身