数据格式变化为
之前
var allInfo = [
{
id:1,
name:'第一个',
childrenId: 11
},
{
id:1,
name:'第一个',
childrenId: 12
},
{
id:2,
name:'第二个',
childrenId: 21
}
]
之后
主要使用了ES6新增的findIndex函数
遍历结果对象数组中是否已有某个对象存在对应id元素。返回结果为索引值。
若已存在,将对象push进对应的位置;若不存在,则初始化后push。
allInfo为数据平铺的对象数组 project中存放格式化后的数组。
var allInfo = [
{
id:1,
name:'第一个',
childrenId: 11
},
{
id:1,
name:'第一个',
childrenId: 12
},
{
id:2,
name:'第二个',
childrenId: 21
}
]
var project = []
allInfo.map(function (item, index) {
var local = project.findIndex(p => p.id === item.id)
if (local !== -1) {
project[local].children.push(item)
} else {
var length = project.push({ id: item.id, name: item.name })
project[length - 1].children = []
project[length - 1].children.push(item)
}
})
若只需去重,则将所有包含children的语句删掉即可。
复杂度没有降低,不是好办法,但是更易理解,简洁。
记录为以后使用。