数组迭代方法对每个数组项进行操作
一、forEach()方法为每个数组元素调用一次函数(回调函数)forEach是循环遍历一遍数组的每一项,这个是没有返回值的,这个方法里面有个回调函数,回调函数有三个参数,第一个是数组每一项的值value,第二个参数是数组每一项对应的下标索引index,array是数组本身。
例:
var txt = “”;
var numbers = [45, 4, 9, 16, 25];
numbers.forEach(myFunction);
function myFunction(value, index, array) {
txt = txt value “
”;
}
上面的例子只用了 value 参数。这个例子可以重新写为:
var txt = “”;
var numbers = [45, 4, 9, 16, 25];
numbers.forEach(myFunction);
function myFunction(value) {
txt = txt value “
”;
}
所有浏览器都支持forEach()方法,除了IE8或更早的版本
二、map()方法通过对每个数组元素执行函数来创建新数组,不会对没有值的数组元素执行函数,不会更改原始数组。
例(将每个数组值乘以2):
var numbers1 = [45, 4, 9, 16, 25];
var numbers2 = numbers1.map(myFunction);
function myFunction(value, index, array) {
return value * 2;
}
如果只需要数组的值,可以省略index、array
所有浏览器都支持map()方法,除了IE8或更早的版本
**三、filter()**创建一个包含通过测试的数组元素的新数组。filter是过滤、筛选的意思。
例(用值大于 18 的元素创建一个新数组):
var numbers = [45, 4, 9, 16, 25];
var over18 = numbers.filter(myFunction);
function myFunction(value, index, array) {
return value > 18;
}
//45,25
同样的,如果只需要数组的值,可以省略index、array
所有浏览器都支持filter()方法,除了IE8或更早的版本
四、reduce()方法在每个数组元素上运行函数,以生成(减少它)单个值,在数组中从左到右工作,不会减少原始数组。
例(确定数组中所有数字的总和):
var numbers1 = [45, 4, 9, 16, 25];
var sum = numbers1.reduce(myFunction);
function myFunction(total, value, index, array) {
return total value;
}//总和是 99
请注意此函数接受 4 个参数:
total总数(初始值/先前返回的值)
value项目值
index项目索引
array数组本身
上例并未使用 index 和 array 参数,可以将它去掉。
reduce() 方法能够接受一个初始值
例:
var numbers1 = [45, 4, 9, 16, 25];
var sum = numbers1.reduce(myFunction, 100);
function myFunction(total, value) {
return total value;
}//总和是 199
所有浏览器都支持 reduce()方法,除了 IE8 或更早的版本
五、reduceRight()方法在每个数组元素上运行函数,以生成(减少它)单个值,数组中从右向左工作,不会减少原始数组。
与reduce()方法类似。
所有浏览器都支持 reduceRight()方法,除了 IE8 或更早的版本
六、every()方法检查所有数组值是否通过测试。
例(检查所有数组值是否大于 18):
var numbers = [45, 4, 9, 16, 25];
var allOver18 = numbers.every(myFunction);
function myFunction(value, index, array) {
return value > 18;
}//false
三个参数,仅调用第一个,其他两个可以省略。
所有浏览器都支持every()方法,除了IE8或更早版本
七、some()方法检查某些数组值是否通过了测试。
例(检查某些数组值是否大于 18):
var numbers = [45, 4, 9, 16, 25];
var someOver18 = numbers.some(myFunction);
function myFunction(value, index, array) {
return value > 18;
}//true
三个参数,仅调用第一个,其他两个可以省略。
所有浏览器都支持some()方法,除了IE8或更早版本
八、indexOf()方法在数组中搜索元素值并返回其位置。
**注:**第一个项目的位置是 0,第二个项目的位置是 1,以此类推。
例(检索数组中的项目“Apple”):
var fruits = [“Apple”, “Orange”, “Apple”, “Mango”];
var a = fruits.indexOf(“Apple”);
语法:
array.indexOf(item, start)
item 必需。要检索的项目。
start 可选。从哪里开始搜索。负值将从结尾开始的给定位置开始,并搜索到结尾。
如果未找到项目,Array.indexOf() 返回 -1。
如果项目多次出现,则返回第一次出现的位置。
所有浏览器都支持indexOf()方法,除了IE8或更早版本
九、lastIndexOf()方法与indexOf() 类似,但是从数组结尾开始搜索。
例(检索数组中的项目“Apple”):
var fruits = [“Apple”, “Orange”, “Apple”, “Mango”];
var a = fruits.lastIndexOf(“Apple”);
//2
所有浏览器都支持lastIndexOf()方法,除了IE8或更早版本
语法和indexOf()类似,star是从结尾开始的给定位置开始,并搜索到开头。
十、find()方法返回通过测试函数的第一个数组元素的值。
例(查找(返回)大于18的第一个元素的值):
var numbers = [4, 9, 16, 25, 29];
var first = numbers.find(myFunction);
function myFunction(value, index, array) {
return value > 18;
}//25
三个参数,仅调用第一个,其他两个可以省略。
老旧的浏览器都不支持fine()方法,完全支持此方法的首个浏览器版本:
联系客服