2014-10-04 110 views
1

我有一个包含数字和字符串的数组,我想从数组中删除所有字符串。 这里是数组:从数组中删除字符串

var numbOnly = [1, 3, "a", 7]; 

在这种情况下,我想删除anumbOnly结果numbOnly = [1, 3, 7])。

谢谢。

+1

遍历数组,并使用检查的dataType'typeof' – Praveen 2014-10-04 07:10:57

+0

我想你的意思'“一”''不A'?或者是一个包含字符串的变量? – 2014-10-04 07:18:05

+0

是的,我的意思是“a”。 – 2014-10-04 07:19:16

回答

2

你可以使用这个:

var numbOnly = [1, 3, "a", 7]; 
var newArr = numbOnly.filter(isFinite) // [1, 3, 7] 

上述作品真的很好,如果你没有像字符串数组中"1"。为了克服这一点,你可以过滤数组是这样的:

newArr = numbOnly.filter(function(x){ 
    return typeof x == "number"; 
}); 
+0

我想要'.filter(isFinite)'。 'Number'会过滤掉零。 – elclanrs 2014-10-04 07:30:23

+0

@elclanrs谢谢! – 2014-10-04 07:32:42

3

可以使用Array.prototype.filter功能与Object.prototype.toString沿着这样

var array = [1, 3, 'a', 7]; 

var numbOnly = array.filter(function(currentItem) { 
    return Object.prototype.toString.call(currentItem).indexOf('Number')!==-1; 
}); 

console.log(numbOnly); 
# [ 1, 3, 7 ] 

或者,您可以使用typeof检查类型这样

return typeof currentItem === 'number'; 

filter功能将保留在当前元素只有传递给它的函数返回当前项目的true。在这种情况下,我们正在检查当前项目的类型是否为数字。因此,filter将只保留类型为数字的项目。