是因为一次无意中看了一篇关于javascript闭包的文章,我突然迷上了javascript,被她的美丽多变的语法和特性给折服,哈哈,闲话不说,就让我们一起来学习吧。
第一个迭代器方法是 forEach(),该方法接受一个函数作为参数,对数组中的每个元素 使用该函数。下面这个例子展示了如何使用该方法:
function square(num){
print(num, num * num);
}
var nums = [1,2,3,4,5,6,7,8,9,10];
nums.forEach(square);
结果大家试一试就知道了。
另一个迭代器方法是 every(),该方法是接受一个返回值是布尔值的函数,对数组里的每一个数使用该函数,若全为ture,则返回ture;否则返回false。
function isEven(num)
{ if(num%2===0)
return true;
else return false;
}
var nums = [2,4,6,8,10];
var even = nums.every(isEven);
if (even) {
print("all numbers are even");
}
else
{
print("not all numbers are even");
}
输出为:
all numbers are even
将数组改为:
var nums = [2,4,6,7,8,10];
输出为:
not all numbers are even
some() 方法也接受一个返回值为布尔类型的函数,只要有一个元素使得该函数返回 true, 该方法就返回 true。比如:
function isEven(num)
{
return num % 2 == 0;
}
var nums = [1,2,3,4,5,6,7,8,9,10];
var someEven = nums.some(isEven);
if (someEven)
{
print("some numbers are even");
}
else
{
print("no numbers are even");
}
nums = [1,3,5,7,9];
someEven = nums.some(isEven);
if (someEven)
{
print("some numbers are even");
}
else
{
print("no numbers are even");
}
该程序的输出为:
some numbers are even no numbers are even
reduce() 方法接受一个函数,返回一个值。该方法会从一个累加值开始,不断对累加值和 数组中的后续元素调用该函数,直到数组中的最后一个元素,最后返回得到的累加值。下 面这个例子展示了如何使用 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);
print(sum); // 显示 55
reduce() 方法和 add() 函数一起,从左到右,依次对数组中的元素求和,其执行过程如下 所示:
add(1,2) -> 3
add(3,3) -> 6
add(6,4) -> 10
add(10,5) -> 15
add(15,6) -> 21
add(21,7) -> 28
add(28,8) -> 36
add(36,9) -> 45
add(45,10) -> 55
reduce() 方法也可以用来将数组中的元素连接成一个长的字符串:
function concat(accumulatedString, item)
{
return accumulatedString + item;
}
var words = ["the ", "quick ","brown ", "fox "];
var sentence = words.reduce(concat);
print(sentence); // 显示 "the quick brown fox"
JavaScript 还提供了 reduceRight() 方法,和 reduce() 方法不同,它是从右到左执行。下面 的程序使用 reduceRight() 方法将数组中的元素进行翻转:
function concat(accumulatedString, item)
{
return accumulatedString + item;
}
var words = ["the ", "quick ","brown ", "fox "];
var sentence = words.reduceRight(concat);
print(sentence); // 显示 "fox brown quick the"
本文章参考算法与数据结构javascript描述