数组迭代方法对每个数组项进行操作 一、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()方法,完全支持此方法的首个浏览器版本:
 十一、findIndex()方法返回通过测试函数的第一个数组元素的索引。 例(查找大于 18 的第一个元素的索引): var numbers = [4, 9, 16, 25, 29]; var first = numbers.findIndex(myFunction); function myFunction(value, index, array) { return value > 18; }//3 三个参数,仅调用第一个,其他两个可以省略。 老旧的浏览器都不支持fineIndex()方法,完全支持此方法的首个浏览器版本:

|