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)
就像我上面提到的,如果有另一种方法可以解决问题,那将是很好的。
在不久的将来,您可以使用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)