2013-02-21 81 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