在javascript中筛选值为0的数组

在javascript中筛选值为0的数组,javascript,Javascript,我得到了这样一个数组: let arr = ['1','2','0','3','0',undefined,'0',undefined,'3','','']; arr = arr.filter(function(e){ if(e){ return parseInt(e); } }); 为了筛选此数组的“undefined”和“”元素并将其转换为数字,我执行以下操作: let arr = ['1','2','0','3','0',undefined,'0',und

我得到了这样一个数组:

let arr = ['1','2','0','3','0',undefined,'0',undefined,'3','',''];
arr = arr.filter(function(e){
    if(e){
        return parseInt(e);
    }
});
为了筛选此数组的“undefined”和“”元素并将其转换为数字,我执行以下操作:

let arr = ['1','2','0','3','0',undefined,'0',undefined,'3','',''];
arr = arr.filter(function(e){
    if(e){
        return parseInt(e);
    }
});
我得到:

[1,2,3,3]
0也已被筛选,因为“return 0”表示“return false”

我想知道你通常如何处理这种问题

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

如果数组中的元素需要是一个数字,而不是一个字符串,我应该再次遍历数组吗?或者有替代的一步法?

替换

return parseInt(e);

演示

var-arr=['1'、'2'、'0'、'3'、'0',未定义、'0',未定义、'3'、'',';
var输出=阵列滤波器(功能(e){
如果(e){
返回!伊斯南(e);
}
});
控制台日志(输出)略有变化

设arr=['1','2','0','3','0',未定义,'0',未定义,'3','',''''];
arr=arr.filter(函数(e){
如果(parseInt(e)>=0){
返回e;
}
});

控制台日志(arr)使用数组链函数很容易:

让arr=['1','2','0','3','0',未定义,'0',未定义,'3','''']
//筛选有效元素(未定义且“”的计算结果为false)
.filter(e=>e)
//要从列表中排除“0”,请按位或
//.filter(e=>e | 0)
//数不清
.map(e=>e*1);
控制台日志(arr)
设arr=['1','2','0','3','0',未定义,'0',未定义,'3','',''''];
让结果=[];
用于(arr的let项目){
设num=+项;
如果(项目==''||编号.isNaN(编号)){
继续;
}
结果:推送(num);
}

控制台日志(结果)
您可以使用
RegExp.prototype.test()
RegExp
/^\d+$/
来检查值是否为一个或多个数字

arr = arr.filter(n => /^\d$/.test(n))

你可以把想要的条件连起来

let数组=['1','2','0','3','0',未定义,'0',未定义,'3','';
数组=数组
.filter(布尔)//仅获取truthy值
.地图(编号);//将所有值转换为数字
console.log(数组)
设arr=['1','2','0','3','0',未定义,'0',未定义,'3','',''''];
//将所有内容映射到数字(未定义变为NaN)
//过滤所有有效数字
arr=arr.map(Number).filter(e=>!isNaN(e))

控制台日志(arr)!伊斯南(e);它不能过滤空字符串。@赵志明是的,请检查演示。
if(e){
过滤空字符串,而不是
!isNaN
@KoshVery我的意思是我的答案是过滤掉空字符串,而不是
!isNaN
,这在OP中已经发生了。很抱歉误解!您忘记了数字的转换…谢谢,结果数组中的元素是字符串,我希望它们是数字,对吗我再次遍历数组?或者有其他单步方法吗?你是说“数字”还是“整数”?