不生成新数组的迭代器方法:forEach()&every()&some()&reduce()&reduceRight()
一、forEach():接受一个函数作为参数, 对数组中的每个元素使用该函数。
function square(num) { alert(num + " : " + num * num); } var nums = [ 1, 2, 3, 4 ]; nums.forEach(square);
二、every(): 接受一个返回值为布尔类型的函数, 对数组中的每个元素使用该函数。
function isEven(num) { return num % 2 == 0; } var nums = [ 2, 4, 6, 8, 10 ]; var even = nums.every(isEven); if (even) { alert("all numbers are even"); } else { alert("not all numbers are even"); }
三、some() :接受一个返回值为布尔类型的函数, 只要有一个元素使得该函数返回 true,该方法就返回 true。
function isEven(num) { return num % 2 == 0; } var nums = [ 1, 2, 3, 6, 7 ]; var someEven = nums.some(isEven); if (someEven) { alert("some numbers are even"); } else { alert("no numbers are even"); }
四、reduce() :接受一个函数, 返回一个值。
该方法会从一个累加值开始, 不断对累加值和数组中的后续元素调用该函数, 直到数组中的最后一个元素, 最后返回得到的累加值。
function add(runningTotal, currentValue) { return runningTotal + currentValue; } var nums = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]; var sum = nums.reduce(add); alert(sum); // 显示 55
function concat(accumulatedString, item) { return accumulatedString + item; } var words = [ "the ", "quick ", "brown ", "fox " ]; var sentence = words.reduce(concat); alert(sentence); // 显示 "the quick brown fox"
五、reduceRight() 方法:执行顺序与reduce相反
function add(runningTotal, currentValue) { return runningTotal + currentValue; } var nums = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]; var sum = nums.reduceRight(add); alert(sum); // 显示 55
function concat(accumulatedString, item) { return accumulatedString + item; } var words = [ "the ", "quick ", "brown ", "fox " ]; var sentence = words.reduceRight(concat); alert(sentence); // 显示 "fox brown quick the"