求助 js数组与对象与递归的问题

weixin_44368787 2019-01-14 04:18:24
[{num:1,child:[{num:1,child: [{num: 1,}]}]}]

有一个类似这种结构的数组,我要改变最里面一层的num增加1,我需要让往上的每一层的num值对应增加1,求问该怎么写最方便

而且我的数据层级数不确定,有可能三层有可能两层,最多四层,并且我还同时需要去减少num,减少最外层的num内层也会改变。

现在困在这个问题很久了 希望能求个帮助
...全文
89 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
scscms太阳光 2019-01-14
  • 打赏
  • 举报
回复
// 统计子集
function count(arr){
if(Array.isArray(arr)){
arr.forEach(function(o){
if(o.child){
count(o.child)
o.num = o.child.reduce(function(c,v){
return c + v.num
},0)
}
})
}
}
// 减少后赋值
function reduce(child,sum){
if(Array.isArray(child)){
child.forEach(function(o){
var _sum = sum
sum -= o.num
if(Number.isInteger(sum) && sum < 0){
o.num = _sum
sum = 0
}
reduce(o.child,o.num)
})
}
}
count(json)
console.log(JSON.stringify(json))
json[1].num = 20
reduce(json)
console.log(JSON.stringify(json))
天际的海浪 2019-01-14
  • 打赏
  • 举报
回复
减少外层要哪个内层改变?还是说所有内层都改变,这与增加时就不对等了。
丰云 2019-01-14
  • 打赏
  • 举报
回复
最内层改变从而逐级修改上层好办,因上层修改而改下层,就很难,因为没法判断下层的改法

87,921

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧