Javascript 数组。筛选器数加零

Javascript 数组。筛选器数加零,javascript,arrays,filter,numbers,Javascript,Arrays,Filter,Numbers,我有一个简单的问题,但我被它困住了:我想转换一个整数和字符串的列表,并返回一个过滤掉字符串的新列表: 例如:([99,5,'love','hate'])==[99,5] 我使用了.filter,但是零也被过滤掉了。最好的选择是什么 函数过滤器(l){ var arr=l.过滤器(编号); 返回arr; }您可以将.filter()与您自己的函数一起使用: function filter(l) { var arr = l.filter(function(n) { return typ

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

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

我使用了
.filter
,但是零也被过滤掉了。最好的选择是什么

函数过滤器(l){
var arr=l.过滤器(编号);
返回arr;
}
您可以将
.filter()
与您自己的函数一起使用:

function filter(l) {
  var arr = l.filter(function(n) {
    return typeof n === "number";
  });
  return arr;
}
请注意,在使用数字构造函数时,将包括数字以及可以成功转换为数字的任何值。包含这些内容有点棘手,因为数字构造函数总是返回一个数字。该值可能是
NaN
,但碰巧
NaN
实际上是一个数字,尽管它本质上坚持认为它不是。

您可以将
.filter()
与自己的函数一起使用:

function filter(l) {
  var arr = l.filter(function(n) {
    return typeof n === "number";
  });
  return arr;
}

请注意,在使用数字构造函数时,将包括数字以及可以成功转换为数字的任何值。包含这些内容有点棘手,因为数字构造函数总是返回一个数字。该值可能是
NaN
,但碰巧
NaN
实际上是一个数字,尽管它本质上坚持认为它不是。如果您想严格过滤掉整数,请尝试使用这些辅助函数:

function isNumber(n) {
  return !isNaN(parseFloat(n)) && isFinite(n);
}

function isInt(n) {
  return isNumber(n) && n % 1 === 0;
}
试试这些

函数isNumber(n){
return!isNaN(parseFloat(n))和&isFinite(n);
}
函数isInt(n){
返回isNumber(n)&&n%1==0;
}
var数组=[99,5,'love','hate'];
var result=array.filter(函数(x){
返回isInt(x);
});
document.querySelector('#output').innerHTML=JSON.stringify(result,null,4)
数组:[99,5,'love','hate']


结果:
如果您只想严格筛选出整数,请尝试以下帮助函数:

function isNumber(n) {
  return !isNaN(parseFloat(n)) && isFinite(n);
}

function isInt(n) {
  return isNumber(n) && n % 1 === 0;
}
试试这些

函数isNumber(n){
return!isNaN(parseFloat(n))和&isFinite(n);
}
函数isInt(n){
返回isNumber(n)&&n%1==0;
}
var数组=[99,5,'love','hate'];
var result=array.filter(函数(x){
返回isInt(x);
});
document.querySelector('#output').innerHTML=JSON.stringify(result,null,4)
数组:[99,5,'love','hate']


结果:
。可能是typeof()。可能是typeof()@Tushar??这不会排除零,因为
typeof 0
“number”
@Tushar请注意,OP明确不想排除零。哦,我以为他想排除零。我知道问题不是关于缩短/优化代码,但可以通过返回filter
return l.filter(函数(n)的结果来缩短代码{return typeof n===“number”;
@Tushar??这不会排除零,因为
typeof 0
“number”
@Tushar请注意,OP明确不想排除zero。哦,我以为他想排除zero。我知道问题不在于缩短/优化代码,但可以通过返回filter
return l.filter(函数(n){return typeof n==“number”;};
小心-
parseFloat()
返回字符串
“23skidoo”
的数字
23
!这也允许字符串看起来像有效的数字,这可能是OP想要的,也可能不是OP想要的(不清楚)。同意。这就是为什么
isNumber
函数也会检查
isFinite
的原因。但是一个(可能是不需要的)这个解决方案的副作用是,一个整数字符串也会进入返回的列表。我将把它添加到应答器中仔细-
parseFloat()
返回字符串
“23skidoo”
的数字
23
!这也允许字符串看起来像有效的数字,这可能是OP想要的,也可能不是OP想要的(不清楚)。同意。这就是为什么
isNumber
函数也会检查
isFinite
。但是这个解决方案的一个(可能是不希望的)副作用是,一个整数字符串也会进入返回的列表。我将把它添加到答案中