基于键将数组值映射到对象

时间:2015-05-25 16:35:30

标签: javascript arrays loops object

我有一个内部有多个数组的Javascript数组,如下所示:

var data = [
  ['value1','value2','value3'],
  ['value1','value2','value3'],
  ['value1','value2','value3'],
  ['value1','value2','value3']
];

我还有另一个数组,其中包含这些值的键:

var key = ['width', 'height', 'depth'];

循环遍历data数组并将值映射到各自的键,返回对象的最佳方法是什么?

示例:

function(data, key) {
  /*
  var newObject = {
    {width: 'value1', height: 'value2', 'depth': 'value3'},
    {width: 'value1', height: 'value2', 'depth': 'value3'},
    {width: 'value1', height: 'value2', 'depth': 'value3'},
    {width: 'value1', height: 'value2', 'depth': 'value3'}
  }
  return newObject;
  */
}

**编辑:

我最初错误地提出问题是试图在对象中映射数组,它应该是 arrays 中的数组。现在问题应该正确反映我的问题。

1 个答案:

答案 0 :(得分:1)

var data = [
  ['value1','value2','value3'],
  ['value1','value2','value3'],
  ['value1','value2','value3'],
  ['value1','value2','value3']
];

var keys = ['width', 'height', 'depth'];

var obj  = [];
for(var i = 0; i < data.length; i++) {
  for(var j = 0; j < keys.length; j++) {
    if(obj[i] == undefined) {
      obj[i] = []
      obj[i][keys[j]] = data[i][j];
    } else {
      obj[i][keys[j]] = data[i][j];
    }
  }
}

console.log(obj);