let origin ={
'f:123': {
deviceName: "设备一",
name: "机器一",
symbol: "um",
tags: [],
type: "float",
fileName:'文件1'
},
'f:456': {
deviceName: "设备二",
name: "机器一",
symbol: "um",
tags: [],
type: "float",
fileName:'文件2'
},
'f:789': {
deviceName: "设备二",
name: "机器二",
symbol: "um",
tags: [],
type: "float",
fileName:'文件2'
}
}
最终结果 result = [
{
fileName: '文件1',
children: [{
deviceName: "设备一",
children: [{
name: "机器一",
symbol: "um",
tags: [],
type: "float",
}]
}]
},
{
fileName: '文件2',
children: [{
deviceName: "设备二",
children: [{
name: "机器一",
symbol: "um",
tags: [],
type: "float",
},
{
name: "机器二",
symbol: "um",
tags: [],
type: "float",
}]
}]
}
];
暴力求解,多层循环嵌套
虽然不知道为什么要这样设计数据,不过就这样吧
let origin = {
'f:123': {
deviceName: "设备一",
name: "机器一",
symbol: "um",
tags: [],
type: "float",
fileName: '文件1'
},
'f:456': {
deviceName: "设备二",
name: "机器一",
symbol: "um",
tags: [],
type: "float",
fileName: '文件2'
},
'f:789': {
deviceName: "设备二",
name: "机器二",
symbol: "um",
tags: [],
type: "float",
fileName: '文件2'
}
}
//对象树
let res = {}
for (let key in origin) {
const { fileName, deviceName, name, ...other } = origin[key]
res[fileName] = res[fileName] ? res[fileName] : { fileName, children: {} }
const { children } = res[fileName]
children[deviceName] = children[deviceName] ? children[deviceName] : { deviceName, children: {} }
const { children: children2 } = children[deviceName]
children2[name] = children2[name] ? children2[name] : { name, ...other }
}
//对象树转化为数组型
const temp3 = []
for (let key in res) {
const { children } = res[key]
const temp2 = []
for (let key2 in children) {
let { children: children2 } = children[key2]
const temp = []
for (let key3 in children2) {
temp.push(children2[key3])
}
children[key2]['children'] = temp
temp2.push(children[key2])
}
res[key]['children'] = temp2
temp3.push(res[key])
}
res = temp3
console.log(res)
记得给个采纳啊