您的位置:首页 > Web前端 > JavaScript

javascript中数组的迭代器方法

2015-12-17 20:12 816 查看
是因为一次无意中看了一篇关于javascript闭包的文章,我突然迷上了javascript,被她的美丽多变的语法和特性给折服,哈哈,闲话不说,就让我们一起来学习吧。

第一个迭代器方法是 forEach(),该方法接受一个函数作为参数,对数组中的每个元素 使用该函数。下面这个例子展示了如何使用该方法:

[code]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。

[code]
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。比如:

[code]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() 方法为数组中的元素求和:

[code]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() 方法也可以用来将数组中的元素连接成一个长的字符串:

[code]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() 方法将数组中的元素进行翻转:

[code]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描述
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: