【发布时间】:2019-04-03 15:15:36
【问题描述】:
我需要编写一个函数,将数组中的数组元素转换为对象。虽然我已经找到了使用for-loop 来解决问题的方法,但我只是想知道是否有更简洁的方法可以使用forEach 或map 等方法来编写解决方案强>。
问题是……
var array: [
[
['firstName', 'Joe'],
['lastName', 'Blow'],
['age', 42],
['role', 'clerk']
],
[
['firstName', 'Mary'],
['lastName', 'Jenkins'],
['age', 36],
['role', 'manager']
]
];
我需要把上面的数组转换成这样的。
[
{ firstName: 'Joe', lastName: 'Blow', age: 42, role: 'clerk' },
{ firstName: 'Mary', lastName: 'Jenkins', age: 36, role: 'manager' }
];
以下是我使用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;
}
就像我上面提到的那样,如果有其他方法可以解决问题,那就太好了。
【问题讨论】:
-
如果这种方式适合您,我认为没有任何理由采用另一种方式。如果有的话,您现在的代码比使用
.map()或.forEach()时更具可读性。您是否有理由想以另一种方式进行操作? -
每当您创建一个空数组,并迭代某些内容并将其添加到数组中时,您可能应该使用 Array#map,但如果您的代码有效,那么它不适合这个论坛。也许codereview.stackexchange.com 另一个建议,创建一个函数,将数组的每一行转换为一个对象。
-
刚开始学习编程,最近学习了数组相关的方法。我只是想应用我学到的东西,但经过几个小时的尝试后效果并不好。我以后会避免这种问题。谢谢你们的cmets!
-
这里有足够的答案...我会使用 map reducer,因为您可能需要减少,如果数组在单独的索引中具有相同的键会发生什么,减少对我来说听起来是正确的
标签: javascript arrays object