巧妙地将javascript对象转换为特定结构的对象数组
本文将详细介绍如何将一个JavaScript对象转换为具有特定结构的对象数组。 我们的目标是将一个键值对(其中值为数组)的对象,转换成一个新的数组。数组中的每个元素都是一个对象,包含原始对象的键作为name属性,原始对象的数组值作为childList属性,并且childList中的每个元素都包含id和name属性。
举例说明:假设我们有以下原始数据:
const obj = {
"a": ["a1", "a2"],
"b": ["b1", "b2", "b3"] // 数组长度可变
};
我们需要将其转换为如下结构的对象数组:
const list = [
{
id: 1,
name: "a",
childList: [
{ id: 3, name: "a1" },
{ id: 4, name: "a2" }
]
},
{
id: 2,
name: "b",
childList: [
{ id: 5, name: "b1" },
{ id: 6, name: "b2" },
{ id: 7, name: "b3" }
]
}
];
利用Object.entries和reduce方法,我们可以高效地实现此转换:
let obj = {
"a": ["a1", "a2"],
"b": ["b1", "b2", "b3"]
};
let id = 1;
const list = Object.entries(obj).reduce((acc, [name, val]) => {
acc.push({
id: id++,
name: name,
childList: val.map(item => ({ id: id++, name: item }))
});
return acc;
}, []);
这段代码首先使用Object.entries将对象转换为键值对数组。然后,reduce方法迭代每个键值对,id变量用于生成唯一的递增ID。map方法将原始数组中的每个元素转换为包含id和name属性的对象,最终构建出目标的对象数组。 此方法优雅地处理了数组长度不定的情况,并确保每个子元素拥有唯一的ID。
以上就是如何高效地将JavaScript对象转换为指定结构的对象数组?的详细内容,更多请关注知识资源分享宝库其它相关文章!
版权声明
本站内容来源于互联网搬运,
仅限用于小范围内传播学习,请在下载后24小时内删除,
如果有侵权内容、不妥之处,请第一时间联系我们删除。敬请谅解!
E-mail:dpw1001@163.com
发表评论