2017-02-16 44 views
0

我有這樣的陣列」爲什麼我的函數不是從數組中刪除所有字符串?的JavaScript

var text = [ 1,2,"a","etf",5,"9f",12,"laks"]; 

我也有這個功能,將通過文本[]迭代並刪除字符串它將顯示只有數字:

var isNumber = function(){ 
    for(var i = 0; i<text.length; i++){ 
     if(isNaN(text[i])){ 
      text.splice(i,1);   
     } 
    } 
    return text; 
} 
isNumber(); 

當我運行它, !它會刪除一些字符串,不是所有的人......任何想法? 感謝

回答

1

你從數組,而你通過它循環刪除項目試試這個:

var isNumber = function(){ 
    for(var i = 0; i < text.length; i++){ 
     if(isNaN(text[i])){ 
      text.splice(i, 1); 
      i--; // go back one step so we won't skip the item after 
     } 
    } 
    return text; 
} 
+0

或者只是使用'Array.filter' – pvg

+0

大,這是快。謝謝,它工作完美! –

+0

@pvg這留在OP請求的上下文中。加'過濾器'返回另一個數組。 OP試圖做的是改變陣列本身! –

0

如果您只想過濾字符串,你可以使用過濾器

text = text.filter(function(item){ 
    return typeof item !== 'string'; 
}) 
0

的typeof使用可以使用過濾器返回的數量都值。

示例代碼段:

var text = [1, 2, "a", "etf", 5, "9f", 12, "laks"]; 
 

 
function isNumber(arr) { 
 
    return arr.filter(function(value) { 
 
    return !isNaN(value) 
 
    }) 
 
} 
 

 
console.log(isNumber(text))

相關問題