我得到了这样的数组:

let arr = ['1','2','0','3','0',undefined,'0',undefined,'3','',''];

为了过滤此数组的'undefined'和''元素并将其转换为数字,我这样做:
arr = arr.filter(function(e){
    if(e){
        return parseInt(e);
    }
});

我有:
[1,2,3,3]

0也被过滤掉了,因为'return 0'意味着'return false'。

我想知道您通常如何处理此类问题?

更新:

我看到以下答案提出了许多有用的方法。
我从中学到了很多。

并且如果数组中的元素需要是数字而不是字符串,我是否应该再次遍历数组?还是有另一种单步方法?

最佳答案

您可以链接所需条件。

let array = ['1', '2', '0', '3', '0', undefined, '0', undefined, '3', '', ''];

array = array
    .filter(Boolean) // get only truthy values
    .map(Number);    // convert all values to number

console.log(array);

09-07 15:44
查看更多