js Array map返回含undefined的数组

最近在使用map的过程中发现有时会返回一个含undefined的数组,在此记录一下

先上代码

        let arr = [
            {
                name: 'a',
                id: 1
            },
            {
                name: 'b',
                id: 2
            },
            {
                name: '',
                id: 3
            },
            {
                name: 'c',
                id: 4
            },
        ];
        arr = arr.map((item) => {
            if (item.name) {
                return item;
            }
        })
        console.log(arr);

本意是想返回一个都是有效名字的对象数组,结果不符要求的元素变成了undefined

原因

因为map方法总需要有返回值 ,当返回 undefined 或没有返回任何内容时,返回值将是undefined

因此我们不能用map生成一个与其长度不等的数组

MDN

如果有以下情形,则不该使用 map

  • 你不打算使用返回的新数组;或
  • 你没有从回调函数中返回值。

 解决方案

  • 用 filter 配合或代替 map
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值