领取MOLI红包
NAKA中文网
你的位置:GLC中文网 > NAKA中文网 >
JS使用reduce()方法处理树形结构数据
发布日期:2025-01-03 18:52    点击次数:64
定义 reduce() 方法对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值。 reduce() 与forEach()、map()、filter()这些方法一样,也会对数组中的每一项进行遍历,但是reduce() 可以将遍历的前一个数组项产生的结果与当前遍历项进行运算。 语法 回调函数中的参数: prev 必需。表示调用回调时的返回值,或者初始值 init。 cur 必需。表示当前元素。 index 可选。表示当前元素的索引。 array 表示原数组。 init 可选。初始值,作为第一次调用回调函数的第一个参数。 其中常用参数:prev 和 cur 注意:回调函数第一次执行时,prev和cur的取值有两种情况:如果调用reduce()时提供了初始值init,prev取init值,cur取数组中的第一个值,此时索引从0开始;如果没有提供初始值init,则prev取数组中的第一个值,cur取数组中的第二个值,此时索引从1开始。 实例 1. 没有传递初始值init 每次调用的参数和返回值如下表: 因为没有传入初始值,所以索引是从1开始,callback被调用三次,开始时prev的值为数组第一项1,cur的值为3,相加之后返回值4作为下一轮回调的prev值,然后继续下一轮的回调,直至完成后返回。 2. 传递初始值的情况下 每次调用的参数和返回值如下表: callback prev cur index array return value 第1次 10 1 0 [1, 3, 5, 7] 11 第2次 11 3 1 [1, 3, 5, 7] 14 第3次 14 5 2 [1, 3, 5, 7] 19 第4次 19 7 3 [1, 3, 5, 7] 26 3. 数组去重 执行的步骤如下: 初始化一个空数组 第一次调用时,prev 为初始值即空数组,cur 为数组中的第一项 arr[1],然后在 prev 中查找 cur 是否已经存在,如果不存在就将该项添加到 prev 中,并 prev 返回进入下一次回调 第二次回调时,prev 为第一次的返回值,cur 为数组中的第二项 arr[2],然后在 prev 中查找 cur 是否已经存在,如果不存在就将该项添加到 prev 中,并 prev 返回进入下一次回调 最后将 prev 这个数组返回 4. 利用 reduce 对数组中的 Object 对象进行分组及合并 5. 利用 reduce 处理菜单后端返回的菜单结构 需要根据 parentId 将这些数据转换成层级结构。 方法一: 方法二: 还可以通过递归的方法来实现,具体就不赘述了 最后生成的数据结构如下图所示: 以上就是JS使用reduce()方法处理树形结构数据的详细内容,更多关于JS的资料请关注脚本之家其它相关文章!