H5W3
当前位置:H5W3 > 问答 > 正文

js两个树结构数据合并去重

data5: [{
label: '1',
children: [{
label: '2',
children: [{
label: '2-1'
}, {
label: '2-2'
}]
}, {
label: '3',
children: [{
label: '3-1'
}]
}]
}]
data6: [{
label: '1',
children: [{
label: '2',
children: [{
label: '2-1'
}, {
label: '2-2'
}]
}, {
label: '3',
children: [{
label: '3-1'
}, {
label: '3-2'
}, {
label: '3-3'
}, {
label: '3-4'
}, {
label: '3-5',
children: [{
label: '3-5-1'
}, {
label: '3-5-2'
}, {
label: '3-5-3'
}, {
label: '3-5-4'
}, {
label: '3-5-5'
}]
}]
}]
}]

怎么对比两组树数据根据label是否相同进行合并去重

回答

function diff(d1, d2) {
    if (d1 == null && d2 == null) return false
    if (! Array.isArray(d1) || ! Array.isArray(d2)) throw "Illegal data struct."
    if (d1.length !== d2.length) return true
    for (let i in d1) {
        if (d1[i].label !== d2[i].label) return true
        if (d1[i].children ^ d2[i].children) return true
        if (diff(d1[i].children, d2[i].children)) return true
    }
    return false
}

未经允许不得转载:H5W3 » js两个树结构数据合并去重

赞 (0)

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址