将2D列中的2列简洁映射到键:值对

时间:2014-02-14 04:20:09

标签: javascript multidimensional-array javascript-objects

在这个示例代码片段中,我有选择地将2D列中的2列转换为对象。第1列表示键,第2列表示值。

我觉得有一种更简洁的方法可以在没有这么多代码的情况下编纂这个想法。

var my2dArray = [ ['a',2], ['b',3], ['c',4] ];
var keys = [];
var values = [];
var myObj = {};

for(var row = 1; row < my2dArray.length; row++) {
    keys[row] = my2dArray[row][0];
    values[row] = my2dArray[row][1];
    myObj[keys[row]] = values[row];
}

console.log(prod_compare); // outputs object

实际上,我有一个4列阵列。不要介意my2dArray的简单性。有没有办法选择这两列来映射到对象而不必声明2个临时数组?

2 个答案:

答案 0 :(得分:1)

您的代码基本上没问题,但它可以更简洁而不会被混淆:

var my2dArray = [ ['a',2], ['b',3], ['c',4] ];
var myObj = {};

for (var i=0, iLen=my2dArray.length; i<iLen; i++) {
  myObj[my2dArray[i][0]] = my2dArray[i][1];
}

答案 1 :(得分:0)

这可能会将[['a', 1, 2, 3], ['b', 1, 2, 3]]转换为{a: [1, 2, 3], b: [1, 2, 3]}

for(var row = 0; row < my2dArray.length; row++) {
    keys[row] = my2dArray[row][0];
    values[row] = my2dArray[row].slice(1);
    myObj[keys[row]] = values[row];
}