2014-04-12 91 views
0

有人可以帮助我使用此javascript。我有两个变量,用逗号分隔的单词。JavaScript将变量组合到数组中

var names = "Verwerkende industrie, Retail, Primaire producent, Out of home, Groothandel, Grondstof, Consument, Bewerkende industrie"; 
var numbers = "9, 3, 4, 2, 7, 9, 3, 2"; 

我想将它们组合成应该结束这样看

var combined = [ 
       ['Verwerkende industrie', 9], 
       ['Retail', 3], 
       ['Primaire producent', 4], 
       ['Out of home', 2], 
       ['Groothandel', 7], 
       ['Grondstof', 9], 
       ['Consument', 3], 
       ['Bewerkende industrie', 2] 
      ]; 
+2

为'numbers'该行无效JavaScript语法。它应该是一个数组?或者像'names'这样的字符串?另外,你确定你不想有一个对象数组而不是数组数组? –

+0

啊,对不起。它也是一个类似于名称的字符串 – Johansrk

回答

1
var names = "Verwerkende industrie, Retail, Primaire producent, Out of home, Groothandel,  Grondstof, Consument, Bewerkende industrie"; 
var numbers = "9, 3, 4, 2, 7, 9, 3, 2"; 

var namesArray = names.split(","); //split the string at ','. split() returns an array of result 
var numbersArray = numbers.split(","); 

var resultArray = []; //array to hold result 

//since the namesArray and numbersArray are the same length, you can use one for-loop 
for (var i=0, len=namesArray.length; i < len; i++) { 
    resultArray[i] = [namesArray[i], parseInt(numbersArray[i])]; 
} 
+0

完美地工作。谢谢..甚至与行评论 – Johansrk

0
var names = "Verwerkende industrie, Retail, Primaire producent, Out of home, Groothandel, Grondstof, Consument, Bewerkende industrie"; 
var numbers = "9, 3, 4, 2, 7, 9, 3, 2"; 

function zip(arrays) { 
    return arrays[0].map(function(_,i){ 
     return arrays.map(function(array){return array[i]}) 
    }); 
} 

// paramert = array 
zip([ 
names.split(/,\s+/), 
numbers.split(/,\s+/).map(function (i) { return parseInt(i); }) 
]); 
+0

这不会给出所需的数组。对于一个空白不被剥离,其次数字将是字符串(示例输出状态他们是数字类型)。 –

+0

现在它[不工作](http://jsfiddle.net/ZBp3F/)。 –

+0

@IngoBürk很抱歉混淆。我很着急 – niklasfi

1

这应该工作的数组。

var names = "Verwerkende industrie, Retail, Primaire producent, Out of home, Groothandel, Grondstof, Consument, Bewerkende industrie"; 
var numbers = "9, 3, 4, 2, 7, 9, 3, 2"; 

names = names.split(','); 
numbers = numbers.split(','); 
var combined = []; 
for(var i = 0; i < names.length; i++){ 
    combined.push([names[i], parseInt(numbers[i])]); 
} 
+0

谢谢也很好。我很快就得到了很多答案 – Johansrk

0

不幸的是JavaScript没有一个“拉链”的功能,但你可以这样做同样的事情:

var namesArr = names.split(", "); 
var numbersArr = numbers.split(", ").map(function (s) { return parseInt(s); }); 
var combined = []; 
for (var i = 0; i < namesArr.length; i++) 
{ 
    combined[i] = [namesArr[i], numbersArr[i]]; 
} 
+0

关闭,但其中一些导致NaN – Johansrk

+0

现在应该修复。 –