js中数组迭代函数—(2)会生成新数组

有两个迭代器方法可以产生新数组:  map() 和 filter()
1、 map(), map() 和 forEach() 有点儿像, 对数组中的每个元素使用某个函数。 两者的区别是 map() 返回一个新的数组, 该数组的元素是对原有元素应用某个函数得到的结果。
< script  type = "text/javascript" > function  curve ( grade )  { return  grade  +=  5 ; } function  doMap ( ) { var  grades  =  [ 77 ,  65 ,  81 ,  92 ,  83 ]  ; var  newgrades  =  grades .  map ( curve ) ; document . write ( newgrades  ) ; } < /script> < script  type = "text/javascript" > function  first ( word )  { return  word [ 0 ]  ; } function  doMap ( ) { var  words  =  [ "for"  ,  "your"  ,  "information"  ]  ; var  acronym  =  words .  map ( first ) ; document . write ( acronym . join ( " "  )) ; } < /script>   在上面这个例子中, 数组 acronym 保存了数组 words 中每个元素的第一个字母。 然而, 如果想将数组显示为真正的缩略形式, 必须想办法除掉连接每个数组元素的逗号, 如果直接调用 toString() 方法, 就会显示出这个逗号。 使用 join() 方法, 为其传入一个空字符串作为参数, 则可以帮助我们解决这个问题。
2、
filter(), filter() 和 every() 类似, 传入一个返回值为布尔类型的函数。 和 every() 方法不同的是,当对数组中的所有元素应用该函数, 结果均为 true 时, 该方法并不返回 true, 而是返回一个新数组, 该数组包含应用该函数后结果为true 的元素。
< script  type = "text/javascript" > function  passing ( num ) { return  num  >=  60 ; } function  doFilter ( ) { var  grades  =  [ ]  ; for  ( var  i  =  0 ;  i  <  20 ;  ++ i )  {          grades [ i ]  =  Math .  floor ( Math .  random ( )  *  101 ) ; } var  passGrades  =  grades .  filter ( passing ) ; document . write ( " All grades: " ) ; document . write ( grades ) ; document . write ( " Passing grades: "  ) ; document . write ( passGrades ) ; } < /script> < script  type = "text/javascript" > function  isEven ( num )  { return  num  %  2  ==  0 ; } function  isOdd ( num )  { return  num  %  2  !=  0 ; } function  doFilter ( ) { var  nums  =  [ ]  ; for  ( var  i  =  0 ;  i  <  20 ;  ++ i )  {       nums [ i ]  =  i +1 ; } var  evens  =  nums . filter ( isEven ) ; document . write ( " Even numbers: "  ) ; document . write ( evens ) ; var  odds  =  nums .  filter ( isOdd ) ; document . write ( " Odd numbers: "  ) ; document . write ( odds ) ; } < /script> 过滤字符串 数组 < script  type = "text/javascript" > function  afterc ( str )  { if  ( str .  indexOf ( "cie"  )  >  -  1 )  {          return  true ; } return  false ; }
 
function  doFilter ( ) { var  words  =  [ "recieve"  ,  "deceive"  ,  "percieve"  ,  "deceit"  ,  "concieve"  ]  ; var  misspelled  =  words .  filter ( afterc ) ; document . write ( misspelled ) ; } < /script>  
 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部