javascript对象转换:键值对数组到结构化对象数组
本文介绍如何将JavaScript键值对数组对象转换为特定结构的对象数组。 假设初始数据是一个对象,其键代表类别,值是该类别下元素的数组:
const obj = {
"a": ["a1", "a2"],
"b": ["b1", "b2", "b3"]
};
目标是将其转换为如下结构的对象数组:每个对象包含id、name和childList属性,childList属性包含子元素的id和name:
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 idCounter = 1; // 使用计数器生成ID
const result = Object.entries(obj).reduce((acc, [name, val]) => {
const parentId = idCounter++;
const childList = val.map(childName => ({ id: idCounter++, name: childName }));
acc.push({ id: parentId, name, childList });
return acc;
}, []);
console.log(result);
这段代码首先使用Object.entries将对象转换为键值对数组。然后,reduce方法迭代每个键值对,将键作为name,值作为childList的数据源。map方法将原始字符串数组转换为包含id和name的对象数组。idCounter变量确保ID的唯一性。最后,reduce方法返回转换后的对象数组。 这种方法简洁高效,易于理解和维护。
以上就是如何将JavaScript键值对数组对象转换为指定结构的对象数组?的详细内容,更多请关注知识资源分享宝库其它相关文章!
版权声明
本站内容来源于互联网搬运,
仅限用于小范围内传播学习,请在下载后24小时内删除,
如果有侵权内容、不妥之处,请第一时间联系我们删除。敬请谅解!
E-mail:dpw1001@163.com
发表评论