//自上而下进行数量累计计算function updateTreeDataAdd(treeData,fieldName){for(var i=0;i<treeData.length;i++){//只有存在子集时,才进行累加计算,否则不修改自身属性值if(treeData[i].children&&treeData[i].children.length>0){//递归遍历并修改children的对应值treeData[i].children = updateTreeDataAdd(treeData[i].children,fieldName);var addSum = 0.00;//循环相加计算和for(var j=0;j<treeData[i].children.length;j++){var childNum = treeData[i].children[j][fieldName];addSum = accAdd(changeTwoDecimal(addSum), changeTwoDecimal(Number(childNum.replace(new RegExp(",","gm"),""))));}//赋值treeData[i][fieldName] = formatMoney(addSum,2);}else if(!treeData[i][fieldName]){treeData[i][fieldName] = formatMoney(0.00,2);}}return treeData;}

如果有多个字段参与计算,可以传一个数组:

 //自上而下进行数量累计计算function updateTreeDataAdd(treeData,fieldNameArray){for(var i=0;i<treeData.length;i++){//只有存在子集时,才进行累加计算,否则不修改自身属性值if(treeData[i].children&&treeData[i].children.length>0){//递归遍历并修改children的对应值treeData[i].children = updateTreeDataAdd(treeData[i].children,fieldNameArray);for(var k=0;k<fieldNameArray.length;k++){var fieldName = fieldNameArray[k];var addSum = 0.00;//循环相加计算和for(var j=0;j<treeData[i].children.length;j++){var childNum = treeData[i].children[j][fieldName];addSum = accAdd(changeTwoDecimal(addSum), changeTwoDecimal(Number(childNum.replace(new RegExp(",","gm"),""))));//赋值treeData[i][fieldName] = formatMoney(addSum,2);}}}else{for(var k=0;k<fieldNameArray.length;k++){var fieldName = fieldNameArray[k];if(!treeData[i][fieldName]){treeData[i][fieldName] = formatMoney(0.00,2);}}}return treeData;}

当然,如果自己有个性化的计算需要也可以自己修改参数,把自己的计算逻辑放进去

JS自上而下递归遍历计算树结构节点数值和相关推荐

  1. js用递归遍历多维数组_JavaScript树结构操作:查找、遍历、筛选、树结构和列表结构相互转换...

    经常有同学问树结构的相关操作,也写了很多次,在这里总结一下JS树形结构一些操作的实现思路,并给出了简洁易懂的代码实现. 本文内容结构大概如下: 一.遍历树结构 1. 树结构介绍 JS中树结构一般是类似 ...

  2. DOM4J解析xml文件,递归遍历全部子节点

    业务需求是把图中的xml解析为如下格式的进行前端展示 ps:解析后用一个map来装,注意map的value是子节点名称,并不是节点值!!! map中的key为: 根节点名,用"-" ...

  3. react 递归遍历四层树结构 遍历分支中的最后一个节点_图解:数据结构中的 6 种树,你心中有数吗?...

    (给算法爱好者加星标,修炼编程内功) 来源:LemonCoder/后端技术学堂(本文来自作者投稿) 数据结构这门课程是计算机相关专业的基础课,数据结构指的是数据在计算机中的存储.组织方式. 我们在学习 ...

  4. js用递归遍历多维数组_js面试题更新之40

    1.数组方法pop() push() unshift() shift() push     后面添加元素,个数不限,返回新数组的长度 pop     从后面删除一个元素,返回那个元素 unshift ...

  5. C语言实现 二叉树 对任意类型数据的遍历、叶子节点统计、树高计算

    本文主要实现C语言对二叉树的构造,可存储所有类型数据,实现数据域的遍历,本文主要介绍递归的遍历方法,含详细图文:以及树高.叶子节点的计算等. 1 二叉树构造 typedef struct Tree / ...

  6. 二叉树的建造、递归与非递归遍历

    #include "stdafx.h" #include <iostream> #include <stack> #include <queue> ...

  7. es6遍历树结构并判断_递归遍历树结构,从某个节点开始查找其子节点中的所有叶子节点...

    背景 现在项目中哟这样的一个需求,左边显示一棵树目录,点击目录的一级或二级节点,右边显示其子节点中的所有叶子节点,而且要求前端来做这个,不用调用接口请求了,那么,这里记录一下我的实现方法.点击叶子节点 ...

  8. 【数据结构】——二叉树的创建、计算叶子结点个数、递归遍历

    前面我们讲了关于数据结构中的堆栈问题,这篇文章主要是为大家简要介绍一下二叉树,并实现二叉树的创建.计算叶子结点个数.递归遍历.判断是否是完全二叉树等相关问题~ 一.二叉树的介绍 1.什么是二叉树 一棵 ...

  9. js无限层级, 递归遍历

    来源数据结构 const productInfoList = [{productId: 2,productName: '2',parentId: 1 },{productId: 1,productNa ...

最新文章

  1. dede 表单必填_织梦dedecms自定义表单选项必填怎么修改
  2. iPhone开发的一些小技巧
  3. linux 修改 ko文件内核版本号
  4. TCP/IP详解--学习笔记(9)-TCP协议概述
  5. ionic overflow:auto失效
  6. leetcode1282. 用户分组(贪心算法)
  7. 2022虎年背景全新UI头像框制作微信小程序源码
  8. 幅度和幅值有区别吗_16G内存够用吗?8G/16G/32G内存横向对比
  9. mac10.11重装php,macosx-10.11-更新osx10.11后,删除自带php版本,重新编译php5.5.29,到make阶段提示错误。...
  10. 保存 Hexo 博客源码到 GitHub
  11. 子列和列_最大子列和
  12. ubuntu 18.04 设置静态IP地址
  13. python中双引号的作用_Python中单引号和双引号的作用
  14. 避免选中页面文字或者内容时出现蓝色背景
  15. 如何查询域名whois?域名whois查询能获得哪些信息
  16. 请问java如何跟isapi通讯,代码怎么实现?
  17. 团队作业1---团队展示
  18. 知名IT企业待遇一览表
  19. 一个坑firewall-cmd: error: unrecognized arguments
  20. 【半导体先进工艺制程技术系列】FinFET工艺流程

热门文章

  1. java每日一讲讲什么_每日一讲.ppt
  2. Word背景默认为绿色,如何更改默认为白色
  3. 【AGC004E】Salvage Robots【动态规划dp】
  4. 【MySQL | 进阶篇】05、MySQL 视图、触发器讲解
  5. Node 异步I/O 实现
  6. 微信个人号客服系统淘宝客发单机器人sdk服务端接口列表
  7. 避免让WPF资源字典变得杂乱臃肿
  8. 淘宝收藏加购对流量分配有影响吗?
  9. MySQL高可用方案
  10. 隐藏在office中的小游戏