Array.filter数字加零

1 javascript arrays numbers filter

我有一个简单的问题,但我坚持它:我想转换一个整数和字符串列表,并返回一个新的列表,过滤掉的字符串:

例如: ([99,5,'love','hate']) == [99,5]

我用过.filter但零也被过滤了.什么是最好的选择?

function filter(l) {
  var arr = l.filter(Number);
  return arr;
}
Run Code Online (Sandbox Code Playgroud)

Poi*_*nty 7

您可以使用.filter()自己的功能:

function filter(l) {
  var arr = l.filter(function(n) {
    return typeof n === "number";
  });
  return arr;
}
Run Code Online (Sandbox Code Playgroud)

请注意,使用数字构造函数时,您将包含数字以及可以成功转换为数字的任何值.包含这些东西有点棘手,因为Number构造函数总是返回一个数字.价值可能是NaN,但NaN事实上它实际上是一个数字,尽管它本身坚持它不是.

  • 我知道问题不在于缩短/优化代码,而是可以通过返回过滤器的结果来缩短代码`return l.filter(function(n){return typeof n ==="number";});; (2认同)