2017-06-19 62 views
-2

我有一個數組像下面並需要從它的前過濾出的數字:[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

你有字符串,而不是數組中的數字。 –

+5

'數字'?你是認真的?什麼是'res'? –

+2

你甚至檢查過互聯網如何檢查一個字符串是一個數字嗎? – Weedoze

回答

2

對你的代碼做一些小的改動以使其工作,這可能會起作用。

var str = ["https://xx.jpg", "https://xx.jpg", "1", "https://guide.jpg", "2", "/static.jpg"]; 
 
var filtered = str.filter(function (item) { 
 
    return !(parseInt(item) == item); 
 
}); 
 
console.log(filtered);

或者,如果你想要的號碼:

var str = ["https://xx.jpg", "https://xx.jpg", "1", "https://guide.jpg", "2", "/static.jpg"]; 
 
var filtered = str.filter(function (item) { 
 
    return (parseInt(item) == item); 
 
}); 
 
console.log(filtered);

+0

該問題要求我們過濾掉數字,因此1.5也應該過濾掉。 –

+0

@LajosArpad試着給1.5看看? ':)'它確實被過濾掉了...... –

+0

@LajosArpad http://jsbin.com/fuwihalote/edit?js,console –

1

你可以使用正則表達式,測試一個字符串,如果它僅包含數字。

var array = ["https://xx.jpg", "https://xx.jpg", "1", "https://guide.jpg", "2", "/static.jpg"]; 
 

 
array = array.filter(function (a) { 
 
    return !/^\d+$/.test(a); 
 
}); 
 

 
console.log(array);

0

您使用FUNC幫手過濾

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

使用isNaN()

var str=["https://xx.jpg","https://xx.jpg","1","https://guide.jpg","2","/static.jpg"]; 
 

 
var filtered = str.filter(function(item) { 
 
     
 
    return (!isNaN(item)); 
 
    }); 
 
     
 
console.log(filtered);

+0

應該過濾掉「1」和「2」而不是其他項目,您需要isNaN而不是!isNaN。此外,您的答案不解決「」或null的情況。 –

1

如果你想檢查一個字符串只包含數字的數字,你可以使用regular expressions

var str = ["https://xx.jpg", "https://xx.jpg", "1", "https://guide.jpg", "2", "/static.jpg"]; 
 
var filtered = str.filter(function (item) { 
 
    return item.match(/^-?\d+$/); 
 
}); 
 
console.log(filtered);

+0

不知道爲什麼downvote ?? –

0
str = str.filter(function(item) { 
    return (item !== 0) && ((!item) || (isNaN(item))); 
}); 

操作的右側調用filter並傳遞function如果一個項目不爲0,返回true和它要麼是falsey與否的數;否則返回false。例如,""null應該保留在陣列中,只要規格如此。使用這種方法,我們得到所需的數組,並將其分配給str變量。