2017-02-16 1 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リクエストのコンテキストにとどまります。プラス 'filter'は別の配列を返します。どの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))