2013-02-21 83 views
2

我有一個數組拆分陣列爲多個數組或備用 - 使用Javascript

var array = ['123.456789,123.1','456.7890123,234.1','789.,345.1']; 

我要找的是

var array1 = [123.456789,456.7890123,789.]; 
var array2 = [123.1,234.1,345.1]; 

什麼是這樣做的最佳實踐的結果? 我一直在尋找 .split(「」); 但希望知道處理它的最佳方法。

在此先感謝 馬赫

回答

3
var arr = ["123.456789,123.1","456.7890123,234.1","789.,345.1"]; 

var array1 = [], 
    array2 = arr.map(function(e) { 
     e = e.split(","); 
     array1.push(+e[0]); 
     return +e[1]; 
    }); 

console.log(array1, array2); 
+0

爲什麼加號** + e [0] **?它與演員陣容相同嗎? – letiagoalves 2013-02-21 09:56:33

+0

@letiagoalves是的,這是'Number(e [0])'的快捷方式。 – VisioN 2013-02-21 10:06:47

+0

很酷。我們一直在學習:) – letiagoalves 2013-02-21 10:10:48

3

我認爲你應該去分裂功能。試試這個還是看這個DEMO

var array = ['123.456789,123.1','456.7890123,234.1','789.,345.1']; 
var array1 = [], array2 = []; 

for(var i=0; i<array.length; i++){ 
    array1[i] = array[i].split(",")[0]; 
    array2[i] = array[i].split(",")[1]; 
} 
+0

[不使用'變種我在array'語法來遍歷數組(http://stackoverflow.com/questions/500504/JavaScript的換在與 - 陣列)。 – 2013-02-21 09:46:32

+0

@Jack你是什麼人? 'for(var i = 0; i letiagoalves 2013-02-21 09:48:02

+1

是的,那樣會更好:)你也可以在一個局部變量中緩存數組長度(雖然微優化)。 – 2013-02-21 10:02:05

1

基本上你應該迭代這個數組,併爲每個項目你分割字符串成兩個部分的基礎上,逗號。每個部分進入它們各自的陣列。

如果Array.forEach()被允許:

var a1 = [], a2 = []; 

array.forEach(function(item) { 
    var parts = item.split(','); 
    a1.push(+parts[0]); 
    a2.push(+parts[1]); 
} 

否則:

var a1 = [], a2 = []; 

for (var i = 0, item; item = array[i]; ++i) { 
    var parts = item.split(','); 
    a1.push(+parts[0]); 
    a2.push(+parts[1]); 
} 
+0

在你的情況下,最好使用'Array.forEach'。 – VisioN 2013-02-21 09:41:20

+0

@VisioN不記得之前使用過這個...啊,是的,這是好多了:) – 2013-02-21 09:41:43