码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-08-29 06:22:14      阅读:339      评论:0      收藏:0      [点我收藏+]

标签:

有两个迭代器方法可以产生新数组: 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>
 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

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

标签:

原文地址:http://blog.csdn.net/linbilin_/article/details/48074449

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!