Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 简洁地将2列从二维数组映射到键:值对_Javascript_Multidimensional Array_Javascript Objects - Fatal编程技术网

Javascript 简洁地将2列从二维数组映射到键:值对

Javascript 简洁地将2列从二维数组映射到键:值对,javascript,multidimensional-array,javascript-objects,Javascript,Multidimensional Array,Javascript Objects,在这个示例代码片段中,我有选择地将2D数组中的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] = my2dArr

在这个示例代码片段中,我有选择地将2D数组中的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
var my2dArray=[[a',2],[b',3],[c',4];
var键=[];
var值=[];
var myObj={};
对于(var row=1;row

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

这可以将
['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];
}
for(var row=0;row
您的代码基本上没有问题,但它可以更简洁,而不会混淆:

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];
}
var my2dArray=[[a',2],[b',3],[c',4];
var myObj={};

对于(var i=0,iLen=my2dArray.length;我真的看不到在代码中使用
键和
值……而且,数组索引从0开始,而不是从1开始。我将两个相关列转换为它们自己的1D数组。至于for循环中的初始化,我故意这么做了。是的,但你说这两个数组是临时的,我认为是假设你以后不需要它。如果它是正确的,我不明白你为什么不能直接使用
mybj[my2dArray[row][0]=my2dArray[row][1];
。如果这是一个答案,我会给你一点荣誉。不确定
iLen
的作用是什么,但这很好!谢谢!!这是一个小小的优化,所以my2dArray.length不会在每个循环中都被访问。在现代浏览器中可能没有任何区别,我想这主要是习惯。这完全有意义。我会这样做的好了,一切都很重要。