JS自上而下递归遍历计算树结构节点数值和
//自上而下进行数量累计计算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自上而下递归遍历计算树结构节点数值和相关推荐
- js用递归遍历多维数组_JavaScript树结构操作:查找、遍历、筛选、树结构和列表结构相互转换...
经常有同学问树结构的相关操作,也写了很多次,在这里总结一下JS树形结构一些操作的实现思路,并给出了简洁易懂的代码实现. 本文内容结构大概如下: 一.遍历树结构 1. 树结构介绍 JS中树结构一般是类似 ...
- DOM4J解析xml文件,递归遍历全部子节点
业务需求是把图中的xml解析为如下格式的进行前端展示 ps:解析后用一个map来装,注意map的value是子节点名称,并不是节点值!!! map中的key为: 根节点名,用"-" ...
- react 递归遍历四层树结构 遍历分支中的最后一个节点_图解:数据结构中的 6 种树,你心中有数吗?...
(给算法爱好者加星标,修炼编程内功) 来源:LemonCoder/后端技术学堂(本文来自作者投稿) 数据结构这门课程是计算机相关专业的基础课,数据结构指的是数据在计算机中的存储.组织方式. 我们在学习 ...
- js用递归遍历多维数组_js面试题更新之40
1.数组方法pop() push() unshift() shift() push 后面添加元素,个数不限,返回新数组的长度 pop 从后面删除一个元素,返回那个元素 unshift ...
- C语言实现 二叉树 对任意类型数据的遍历、叶子节点统计、树高计算
本文主要实现C语言对二叉树的构造,可存储所有类型数据,实现数据域的遍历,本文主要介绍递归的遍历方法,含详细图文:以及树高.叶子节点的计算等. 1 二叉树构造 typedef struct Tree / ...
- 二叉树的建造、递归与非递归遍历
#include "stdafx.h" #include <iostream> #include <stack> #include <queue> ...
- es6遍历树结构并判断_递归遍历树结构,从某个节点开始查找其子节点中的所有叶子节点...
背景 现在项目中哟这样的一个需求,左边显示一棵树目录,点击目录的一级或二级节点,右边显示其子节点中的所有叶子节点,而且要求前端来做这个,不用调用接口请求了,那么,这里记录一下我的实现方法.点击叶子节点 ...
- 【数据结构】——二叉树的创建、计算叶子结点个数、递归遍历
前面我们讲了关于数据结构中的堆栈问题,这篇文章主要是为大家简要介绍一下二叉树,并实现二叉树的创建.计算叶子结点个数.递归遍历.判断是否是完全二叉树等相关问题~ 一.二叉树的介绍 1.什么是二叉树 一棵 ...
- js无限层级, 递归遍历
来源数据结构 const productInfoList = [{productId: 2,productName: '2',parentId: 1 },{productId: 1,productNa ...
最新文章
- dede 表单必填_织梦dedecms自定义表单选项必填怎么修改
- iPhone开发的一些小技巧
- linux 修改 ko文件内核版本号
- TCP/IP详解--学习笔记(9)-TCP协议概述
- ionic overflow:auto失效
- leetcode1282. 用户分组(贪心算法)
- 2022虎年背景全新UI头像框制作微信小程序源码
- 幅度和幅值有区别吗_16G内存够用吗?8G/16G/32G内存横向对比
- mac10.11重装php,macosx-10.11-更新osx10.11后,删除自带php版本,重新编译php5.5.29,到make阶段提示错误。...
- 保存 Hexo 博客源码到 GitHub
- 子列和列_最大子列和
- ubuntu 18.04 设置静态IP地址
- python中双引号的作用_Python中单引号和双引号的作用
- 避免选中页面文字或者内容时出现蓝色背景
- 如何查询域名whois?域名whois查询能获得哪些信息
- 请问java如何跟isapi通讯,代码怎么实现?
- 团队作业1---团队展示
- 知名IT企业待遇一览表
- 一个坑firewall-cmd: error: unrecognized arguments
- 【半导体先进工艺制程技术系列】FinFET工艺流程