100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > js 将二维对象数组转换成树状结构数据

js 将二维对象数组转换成树状结构数据

时间:2024-07-15 20:06:46

相关推荐

js 将二维对象数组转换成树状结构数据

const list = [{ id: 2, key: { id: 1, name: '测试' }, value: { id: 2, name: 'waer' } },{ id: 3, key: { id: 2, name: '电影' }, value: { id: 3, name: 'rt' } },{ id: 5, key: { id: 1, name: '测试' }, value: { id: 5, name: 'zxcf1' } },{ id: 9, key: { id: 6, name: 'wer' }, value: { id: 9, name: 'rt' } },{ id: 25, key: { id: 2, name: '电影' }, value: { id: 25, name: 'waerawer' } }]

将上面数组转换成树状结构数据

assemblyTreeData = (list) => {const target = [];const keys = {};list.forEach((item) => {if (item.key && item.key.id) {const values = {label: item.value.name,value: item.value.id};if (Object.prototype.hasOwnProperty.call(keys, item.key.id)) {target[keys[item.key.id]].children.push(values);} else {keys[item.key.id] = target.length;target.push({value: item.key.id,label: item.key.name,children: [values]});}}});return target;};

转换结果:

[{value: 1,label: '测试',children: [{label: 'waer',value: 2},{label: 'zxcf1',value: 5}]},{value: 2,label: '电影',children: [{label: 'rt',value: 3},{label: 'waerawer',value: 25}]},{value: 6,label: 'wer',children: [{label: 'rt',value: 9}]}]

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。