【问题标题】:Mapping array values to object based on key基于键将数组值映射到对象
【发布时间】:2015-05-25 16:35:29
【问题描述】:

我有一个 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;
  */
}

**编辑:

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

【问题讨论】:

  • 这看起来不像是有效的语法。修复后,查看map
  • “我有一个 Javascript 对象,里面有很多数组” 那不是有效的 JS。你有一个数组数组吗?有多种方法可以遍历集合:forfor/inArray#.mapArray#forEach。本身没有“最佳”方式,请使用您最容易理解的方式。你有没有尝试过任何东西?
  • @user4703663:你应该让 OP 澄清他们的问题。
  • 抱歉,数组数组,现在编辑帖子。

标签: javascript arrays loops object


【解决方案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);

【讨论】:

  • 这会返回一个数组,我想返回一个里面有对象的对象。
  • 散列的键应该是 uniq。上面的示例语法无效,您可以尝试取消注释它,据我所知,它必须是一个哈希数组。
猜你喜欢
  • 2012-01-11
  • 2018-03-10
  • 2019-04-28
  • 2020-07-22
  • 1970-01-01
  • 1970-01-01
  • 2019-09-25
  • 2021-04-20
  • 2013-07-22
相关资源
最近更新 更多