JSON 问题给你们。
假设我有一个像这样的 JSON 对象,每个节点都是一个带有 ID 和其他节点数组的对象:
var tree = {
id: 0,
items: [{
id: 48,
items: [{id: 67, items :[]}]
}, {
id: 126,
items: []
}]
}
Run Code Online (Sandbox Code Playgroud)
假设我想在适当的节点用新的项目数组更新对象。因此,例如,使用上述树对象会发生以下情况:
function updateTree(id, array) {
//code goes here
}
var data = [{id: 121, items :[]}]
tree = UpdateTree(67, data)
Run Code Online (Sandbox Code Playgroud)
和 tree 会相等:
tree = {
id: 0,
items: [{
id: 48,
items: [{id: 67, items : [{id: 121, items :[]}]}]
}, {
id: 126,
items: []
}]
}
Run Code Online (Sandbox Code Playgroud)
我将如何在这里实现 updateTree ?递归正在撕裂我的大脑。谢谢!这是一个小提琴:https : //jsfiddle.net/nus2jyvg/
var tree = {
id: 0,
items: [{
id: 48,
items: [{id: 67, items :[]}]
}, {
id: 126,
items: []
}]
}
function updateTree(id, update, tree) {
if (tree.id === id) {
tree.items = update
} else {
tree.items = tree.items.map(function(item) {
return updateTree(id, update, item)
})
}
return tree
}
var data = [{id: 121, items :[]}]
tree = updateTree(67, data, tree)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1929 次 |
| 最近记录: |