将数组中的值添加到对象javascript

时间:2018-05-28 07:55:45

标签: javascript for-loop

我有一个数组。

var nestedArr =[['loop0', 0], ['loop1', 1], ['loop2', 2], ['loop3', 3], ['loop4', 4], ['loop5', 5]]

我必须使用for循环:

var obj = { loop0: 0, loop1: 1, loop2: 2 ...};

我正在尝试这个:

for(var j = 0; j < nestedArr.length; j++){
    obj[nestedArr[j][0]] = nestedArr[j][1]}

但我得到的值是未定义的。如何正确添加值。

3 个答案:

答案 0 :(得分:1)

您可以使用var nestedArr = [ ['loop0', 0], ['loop1', 1], ['loop2', 2], ['loop3', 3], ['loop4', 4], ['loop5', 5] ]; var output = {}; nestedArr.reduce(function(itm) { output[itm[0]] = itm[1]; }); console.log(output);功能,如下所示:

var nestedArr = [
  ['loop0', 0],
  ['loop1', 1],
  ['loop2', 2],
  ['loop3', 3],
  ['loop4', 4],
  ['loop5', 5]
];

var obj = {};

for (var j = 0; j < nestedArr.length; j++) {

  obj[nestedArr[j][0]] = nestedArr[j][1]

}

console.log(obj)

你的循环也是正确的:

 print("     Training data: {}".format(x_Train.shape))
 print("     Training data: {}".format(y_Train.shape))
 print("     Test data: {}".format(x_Test.shape))
 print("     Test data: {}".format(y_Test.shape))

 ....

 Training data: (128, 90, 561)
 Training data: (128,)
 Test data: (43, 90, 561)
 Test data: (43,)

答案 1 :(得分:1)

对我来说很好。刚刚添加了obj

的定义

&#13;
&#13;
var nestedArr =[['loop0', 0], ['loop1', 1], ['loop2', 2], ['loop3', 3], ['loop4', 4], ['loop5', 5]],
     obj = {};

for(var j = 0; j < nestedArr.length; j++){

obj[nestedArr[j][0]] = nestedArr[j][1]

}

console.log(obj)
&#13;
&#13;
&#13;

答案 2 :(得分:0)

使用Array.prototype.reduce即可。

var nestedArr =[['loop0', 0], ['loop1', 1], ['loop2', 2], ['loop3', 3], ['loop4', 4], ['loop5', 5]]

const res = nestedArr.reduce((acc, v) => {
  acc[v[0]] = v[1];
  return acc;
}, {});

console.log(res);