你会使用数组吗?Map,根据条件删除它所作用的元素

Can you use Array.map to get rid of the elements it acts on based on a condition?

本文关键字:删除 条件 元素 作用 数组 Map      更新时间:2023-09-26

我想知道,假设我有一个像这样的数组:

var arr = [1,2,3,4]

可不可以这样做:

arr.map(function(val, index, arr){
    if(val === 2){
       return; //I want to return nothing 
    } else {
       return val *2;
    }
});

这是我想要得到的:

[2,6,8]

我实际得到的:

[2, undefined, 6, 8]

我知道这种行为是正确的,但是我想知道如果可能的话,我如何使用map来达到我想要的结果。从本质上讲,我希望不返回的元素就像它们从未在数组中存在过一样。

可以先对数组进行筛选,然后再进行映射。

var arr = [1,2,3,4];
arr = arr.filter(function(val) {
  return val !== 2;
}).map(function(val) {
  return val * 2;
});

在ES6中,它是如此容易和可读:

[1,2,3,4].filter(i => i !== 2).map(i => i * 2);