将数组数组转换为对象?

时间:2017-10-27 04:39:06

标签: javascript

尝试将数组数组(内部数组只存储两个值)转换为对象。

这是我到目前为止所得到的:



function fromListToObject(array) {
  var obj = {};
  for (i in array) {
      obj[array[i[0]]] = array[i[1]];
  };
  return obj
};


A1=[['make', 'Ford'], ['model', 'Mustang'], ['year', 1964]];
console.log(fromListToObject(A1));




但是它给了我一个对象,其中键是数组对,值是"未定义。"

HALP?

4 个答案:

答案 0 :(得分:2)

使用ES6,您可以使用



var array = [['make', 'Ford'], ['model', 'Mustang'], ['year', 1964]],
    object = Object.assign(...array.map(([k, v]) => ({ [k]: v })));

console.log(object);




答案 1 :(得分:1)

将您的代码更改为:

function fromListToObject(array) {
  var obj = {};
  for (i in array) {
      obj[array[i][0]] = array[i][1];
  };
  return obj
};


A1=[['make', 'Ford'], ['model', 'Mustang'], ['year', 1964]];
console.log(fromListToObject(A1));

获取数组值时,您编写了错误的语法。

答案 2 :(得分:1)

您可以按如下方式使用Array.prototype.reduce()



const array = [['make', 'Ford'], ['model', 'Mustang'], ['year', 1964]];

const object = array.reduce((result, [key, value]) => {
  result[key] = value;
  
  return result;
}, {});

console.log(object);




答案 3 :(得分:0)

试试这个:

function fromListToObject(array) {
  return Object.assign.apply({}, array.map(function(subarray) {
      var temp = {}
      temp[subarray[0]] = subarray[1]
      return temp
    })
  )
};


A1=[['make', 'Ford'], ['model', 'Mustang'], ['year', 1964]];
console.log(fromListToObject(A1));

它使用这些键值对将所有数组展平为一个大对象:

{ make: 'Ford', model: 'Mustang', year: 1964 }