javascript - 将数组数组展开为对象数组
问题描述
我有一个数组数组,我需要将每个嵌套数组中的第一个成员变成一个键,然后从其余数组中创建一个对象数组。第一个之后的每个奇数成员都是键,偶数成员是值。
请参阅示例:请注意,原始嵌套数组始终具有奇数或成员(甚至在您删除第一个成员以使其成为新键之后)
//ORIGINAL
var arr = [
[first, a, b, c, d],[second, e, f, g, h, i, j],[third,...]
]
// DESIRED RESULT
var obj = [
{first: [{a:b}, {c:d}]},
{second: [{e:f}, {g:h}, {i:j}]},
{third: ...}
]
解决方案
使用array.map
和 ES6 解构和休息运算符和动态对象键:
var arr = [
["first", "a", "b", "c", "d"],["second", "e", "f", "g", "h", "i", "j"],["third"]
]
var obj = arr.map(([key, ...rest]) => {
let res = { [key]: [] }
for(let i = 0; i < rest.length; i+=2)
res[key].push({ [rest[i]]: rest[i+1] });
return res;
});
console.log(obj);
推荐阅读
- scala - 为什么在我向类型引入参数后它会停止工作?(斯卡拉)
- laravel - 是否可以将多个值传递给 Laravel 控制器
- c# - 为什么带有返回左外连接结果的存储过程的 EF Core FromSql 重复数据记录
- android - 我什么时候应该使用对象类型与直接 Kotlin 文件
- java - 无法获取 Java 代码以将用户输入的数据分配给 Joptionpane 中的对象字段
- c++ - C++ 中的类型双关语问题
- pyspark - 从 pyspark 中的所有列名中删除空格
- java - Java 11:导入 javax.xml.ws.WebFault:“无法解析符号 ws”
- angular - (Angular)使用双向数据绑定与服务在组件之间共享数据
- excel - 如果工作表中有选定的范围,单元格验证将返回运行时错误 1004