有没有一种方法可以通过使用.forEach或.map代替for循环来解决此问题?

Dam*_*ase 7 javascript arrays object

我需要编写一个将数组中的数组元素转换为对象的函数。尽管我已经找到了一种使用来解决问题的方法for-loop,但我只是想知道是否存在使用forEach或方法来编写解决方案的更简洁的方法map

问题是...

var array: [
  [
    ['firstName', 'Joe'],
    ['lastName', 'Blow'],
    ['age', 42],
    ['role', 'clerk']
  ],
  [
    ['firstName', 'Mary'],
    ['lastName', 'Jenkins'],
    ['age', 36],
    ['role', 'manager']
  ]
];
Run Code Online (Sandbox Code Playgroud)

我需要将上面的数组转换成这样。

[
  { firstName: 'Joe', lastName: 'Blow', age: 42, role: 'clerk' },
  { firstName: 'Mary', lastName: 'Jenkins', age: 36, role: 'manager' }
];
Run Code Online (Sandbox Code Playgroud)

以下是我使用提出的代码for-loop

function transformEmployeeData(array)
{  
  var output = [];

  for (var i = 0; i < array.length; i++)
  {
    var obj = {};

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

    output.push(obj);
  }

  return output;
}
Run Code Online (Sandbox Code Playgroud)

就像我上面提到的,如果有另一种方法可以解决问题,那将是很好的。

Shi*_*rsz 5

在不久的将来,您可以使用Object.fromEntries()。目前某些浏览器版本支持该功能:浏览器兼容性

var arr = [
  [
    ['firstName', 'Joe'],
    ['lastName', 'Blow'],
    ['age', 42],
    ['role', 'clerk']
  ],
  [
    ['firstName', 'Mary'],
    ['lastName', 'Jenkins'],
    ['age', 36],
    ['role', 'manager']
  ]
];

console.log(arr.map(Object.fromEntries));
Run Code Online (Sandbox Code Playgroud)
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}
Run Code Online (Sandbox Code Playgroud)