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

本文介绍了JavaScript中数组的两个重要方法:map() 和 filter()。map() 方法用于创建一个新数组,其结果是调用提供的函数处理原数组的每个元素;而 filter() 方法则创建一个由符合测试函数条件的所有元素组成的新数组。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值