2014-06-16 69 views
0

我有一個簡單的JavaScript問題。我試圖從字符串中提取數字,其中有兩行用'\ n'分隔,每個數字用','分隔。從數組中提取數字JavaScript

在第一個例子中,我想獲得第一,第二,第三,第四和第五個數字。在第二種情況下,我想要第一個和第六個數字。

我迄今爲止代碼:

var str = "1391,15,48,58,75,9300\n1687,76,65,23,34,9111"; 
var lines = str.split('\n'); 

$.each(lines, function() { 
var items = str.split(','); 

    var foo = [], 
    bar = [], 
    foobar = str.length; 

    for (i = 0; i < foobar; i++) { 
     foo.push([parseFloat(str[i][0]), 
        parseFloat(str[i][1]), 
        parseFloat(str[i][2]), 
        parseFloat(str[i][3]), 
        parseFloat(str[i][4]) 

     ]); 

      bar.push([parseFloat(str[i][0]), 
        parseFloat(str[i][5]) 
      ]); 

    } 
}); 

的代碼不能正常工作。我只得到垃圾。我錯過了什麼?

編輯:

爲了補充Vergilius答案,這個代碼現在工作:

var str = "1391,15,48,58,75,9300\n1687,76,65,23,34,9111"; 
var lines = str.split('\n'); 

var foo = []; var bar = []; 

for(var i = 0; i < lines.length; i++){ 

var items = lines[i].split(','); 

foo.push([parseFloat(items[0]), 
    parseFloat(items[1]), 
    parseFloat(items[2]), 
    parseFloat(items[3]), 
    parseFloat(items[4]) 
]); 

bar.push([parseFloat(items[0]), 
    parseFloat(items[5]) 
]); 
} 
+3

不使用'str.length',你可以改爲使用'items.length' – simonzack

+1

顯示「垃圾」。 –

回答

0
var str = "1391,15,48,58,75,9300\n1687,76,65,23,34,9111", 
    lines = str.split('\n'), i, tmp, foo = [], bar = []; 

for(i = 0; i <= lines.length - 1; i++) { 
    tmp = lines[i].split(','); 
    foo = tmp.filter(function(value, key) { if(key < 5) return true }); 
    bar = tmp.filter(function(value, key) { if(key == 0 || key == 5) return true }); 

} 

應該沒問題,但你仍然需要解析項目(嘗試用另一個循環)

+0

謝謝!現在我明白了。 – ljnissen