Javascript 从数组中筛选出数字

Javascript 从数组中筛选出数字,javascript,arrays,string,filter,Javascript,Arrays,String,Filter,我有一个如下所示的数组,需要从中过滤出数字,例如:[1,2] var str = [ "https://xx.jpg", "https://xx.jpg", "1", "https://guide.jpg", "2", "/static.jpg" ] 我有以下代码: var filtered = str.filter(function(item) { return (typeof item === "number") }); 但它不是过滤,因为它是一个字符串 如

我有一个如下所示的数组,需要从中过滤出数字,例如:
[1,2]

var str = [
  "https://xx.jpg",
  "https://xx.jpg",
  "1",
  "https://guide.jpg",
  "2", 
  "/static.jpg"
]
我有以下代码:

var filtered = str.filter(function(item) {
  return (typeof item === "number")
});
但它不是过滤,因为它是一个字符串


如何做到这一点?

对代码做一点小改动,使其工作,这可能会起作用

var str=[”https://xx.jpg", "https://xx.jpg", "1", "https://guide.jpg“,”2“,“/static.jpg”];
var filtered=str.filter(函数(项){
返回!(parseInt(item)==item);
});

console.log(过滤)如果字符串只包含数字,则可以使用正则表达式来测试字符串

var数组=[”https://xx.jpg", "https://xx.jpg", "1", "https://guide.jpg“,”2“,“/static.jpg”];
array=array.filter(函数(a){
返回!/^\d+$/.test(a);
});

console.log(数组)您可以在筛选器中使用func助手

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

var str=[”https://xx.jpg","https://xx.jpg","1","https://guide.jpg“,”2“,“/static.jpg”];
var filtered=str.filter(函数(项){
返回(!isNaN(项目));
});

console.log(过滤)如果要检查字符串是否仅包含数字,可以使用

var str=[”https://xx.jpg", "https://xx.jpg", "1", "https://guide.jpg“,”2“,“/static.jpg”];
var filtered=str.filter(函数(项){
返回项。匹配(/^-?\d+$/);
});
console.log(过滤)

操作的右侧调用
过滤器
,并传递
函数
,如果某个项不是0且它不是假或不是数字,则该函数返回
;否则它将返回
false
。例如,
null
应尽可能地保留在数组中。通过这种方法,我们得到所需的数组,并将其分配给
str
变量。

我认为这是从数组中过滤出数字的最精确的方法

str.filter(Number);
如果数组包含字符串形式的数字,则生成的数组将具有字符串形式的数字。在您的情况下,生成的数组将是[“1”,“2”]

如果原始数组包含0或“0”,则它们不会出现在结果数组中

如果结果数组应仅包含整数

str.filter(Number.isInteger)
这将排除“1”、“2”等字符串形式的数字

对于整数和浮点数

str.filter(Number.isFinite)
const filterNumber=[123456789,‘限制’、‘精英’、987654321,‘破坏’、‘存在’;
const result=filterNumber.filter(number=>parseInt(number)==number);

控制台日志(结果)以上大多数答案都是好的,但缺少一点过滤掉数字数组(既不是整数,也不是字符串形式的数字)

我添加了这个片段来解决这些小问题。
var str=[”https://xx.jpg", "https://xx.jpg", "1", "https://guide.jpg“,”2.4“,“/static.jpg”,“4”];
var filteredNumbers=str.filter(item=>parseFloat(item)==item.map(item=>parseFloat(item));
控制台日志(过滤器编号)
parseInt将数字转换为整数,其他值转换为“NaN”,isNaN函数验证值是否为“NaN”


数组中有字符串,而不是数字。
数字
?你是认真的吗?什么是
res
?你在互联网上查过如何检查字符串是否是数字吗?我想请你了解JavaScript的基本类型。可能重复的“1”和“2”应该被过滤掉,而不是其他项目,你需要的是isNaN而不是!伊斯南。另外,您的答案没有处理“”或null的情况。问题要求我们过滤掉数字,因此1.5也应该过滤掉。您是对的,parseInt(1.5)返回1,我认为它返回NaN。我的朋友,我真的不明白为什么人们要投否决票!我想你不应该在意。当我确信你的答案是正确的时,我把它投了赞成票。我的回答没有被投赞成票,也没有被投反对票。“当我确信自己给出了正确的答案时,我也经常被否决,但这不会阻止我提供帮助。”LajosArpad同意。我只是想知道为什么。我正要写同样的东西。这应该是最重要的答案。这将排除
“0”
,因为0是一个值过滤器(Number),除了零之外,您应该使用过滤器(Number.isInteger)@аlexdykyі过滤器(Number.isInteger)也将排除数组中的所有整数值,如“1”、“3”等。
str.filter(Number.isFinite)
var str = ["https://xx.jpg","https://xx.jpg","1","https://guide.jpg","2", "/static.jpg" ]
str.filter(item=>!isNaN(parseInt(item)))