js操作数组的方法 02
js操作数组的方法 01:https://www.cnblogs.com/xingyue525/p/13927434.html
迭代方法:
ECMAScript 5 为数组定义了 5 个迭代方法。每个方法都接收两个参数:要在每一项上运行的函数和(可选的)运行该函数的作用域对象——影响 this 的值。
传入这些方法中的函数会接收三个参数:数组项的值、该项在数组中的位置和数组对象本身。
1、every() :对数组中的每一项运行给定函数,如果该函数对每一项都返回 true ,则返回 true 。(当返回false 时整个循环就结束)(不会影响原数组)
var numbers = [3,2,3,4,5,5,4,3,2,1,3,2,1]; var everyResult = numbers.every(function(item, index, array){ console.log(item) // 3 2 return (item > 2); }); console.log(everyResult) // false var numbers = [3,5,3,4,5,5,4,3]; var everyResult = numbers.every(function(item, index, array){ console.log(item) // 3,5,3,4,5,5,4,3 return (item > 2); }); console.log(everyResult) // true
2、filter() :对数组中的每一项运行给定函数,返回该函数会返回 true 的项组成的数组。(不会影响原数组)(return 不影响继续执行) (生成新数组)
var numbers = [1,2,3,4,5,4,3,2,1]; var filterResult = numbers.filter(function(item, index, array){ console.log(item) // 1,2,3,4,5,4,3,2,1 return (item > 2); }); console.log(filterResult) // [3, 4, 5, 4, 3] console.log(numbers) // [1, 2, 3, 4, 5, 4, 3, 2, 1]
3、forEach() :对数组中的每一项运行给定函数。这个方法没有返回值。(return 不影响继续执行)
var numbers = [1,2,3,4,5,4,3,2,1]; var forEachResult = numbers.forEach(function(item, index, array){ console.log(item) // 1,2,3,4,5,4,3,2,1 return (item > 2); }); console.log(forEachResult) // undefined console.log(numbers) // [1, 2, 3, 4, 5, 4, 3, 2, 1]
4、map() :对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。(生成新数组)
var numbers = [1,2,3,4,5,4,3,2,1]; var mapResult = numbers.map(function(item, index, arr) { console.log(item) // 1, 2, 3, 4, 5, 4, 3, 2, 1 return item * 2 }) console.log(mapResult) // [2, 4, 6, 8, 10, 8, 6, 4, 2] console.log(numbers) // [1, 2, 3, 4, 5, 4, 3, 2, 1]
5、some() :对数组中的每一项运行给定函数,如果该函数对任一项返回 true ,则返回 true 。遇到一项返回true, 就停止执行循环
var numbers = [1,2,3,4,5,4,3,2,1]; var someResult = numbers.some(function(item, index, arr) { console.log(item) // 1, 2, 3 return item > 2 }) console.log(someResult) // true console.log(numbers) // [1, 2, 3, 4, 5, 4, 3, 2, 1]
归并方法
reduce() 和 reduceRight() 。这两个方法都会迭代数组的所有项,然后构建一个最终返回的值。
这两个方法都接收两个参数:一个在每一项上调用的函数和(可选的)作为归并基础的初始值。
传给 reduce() 和 reduceRight() 的函数接收 4 个参数:前一个值、当前值、项的索引和数组对象。
1、 reduce() 方法从数组的第一项开始,逐个遍历到最后。
var values = [1,2,3,4,5]; var i = 0; var sum = values.reduce(function(prev, cur, index, array){ i++; console.log(prev) // 1 , 3 , 6 , 10 console.log(cur) // 2 , 3 , 4 , 5 console.log(index) // 1 , 2 , 3 , 4 console.log(i) // 1 , 2 , 3 , 4 return prev + cur; }); console.log(sum) // 15 console.log(values) // [1, 2, 3, 4, 5]
2、 reduceRight() 方法从数组的最后一项开始,向前遍历到第一项。
var values = [1,2,3,4,5]; var i = 0; var sum = values.reduceRight(function(prev, cur, index, array){ i++; console.log(prev) // 5 , 9 ,12 , 14 console.log(cur) // 4 , 3 , 2 , 1 console.log(index) // 3 , 2 , 1 , 0 console.log(i) // 1 , 2 , 3 , 4 return prev + cur; }); console.log(sum) // 15 console.log(values) // [1, 2, 3, 4, 5]