Javascript 数组转无限级分类
递归
var arr = [
{"id":1,"parent_id":0,"name":"Foods"},
{"id":2,"parent_id":1,"name":"Fruits"},
{"id":3,"parent_id":2,"name":"apple"},
{"id":4,"parent_id":2,"name":"orange"},
{"id":5,"parent_id":2,"name":"tomato"},
{"id":6,"parent_id":1,"name":"Vegetables"},
{"id":7,"parent_id":6,"name":"carrot"},
{"id":8,"parent_id":6,"name":"cabbage"},
{"id":9,"parent_id":6,"name":"potato"},
{"id":10,"parent_id":6,"name":"lettuce"},
{"id":11,"parent_id":0,"name":"Cars"}
];
function convert(arr, id){
var res = [];
for (var i = 0; i < arr.length; i++) {
if (arr[i].parent_id == id) {
res.push(arr[i]);
// var func = eval(arguments.callee.name);
// arr[i].child = func(arr, arr[i].id);
arr[i].child = convert(arr,arr[i].id);
}
}
return res;
}
console.log(convert(arr, 0));
https://www.jianshu.com/p/e8f3d71bd9c6
Javascript 数组转无限级分类的更多相关文章
- PHP无限级分类的实现(不使用递归)
无限级分类在开发中经常使用,例如:部门结构.文章分类.无限级分类的难点在于“输出”和“查询”,例如 将文章分类输出为<ul>列表形式: 查找分类A下面所有分类包含的文章. 1.实现原理 在 ...
- MVC无限级分类02,增删改查
继上一篇"MVC无限级分类01,分层架构,引入缓存,完成领域模型与视图模型的映射",本篇开始MVC无限级分类的增删改查部分,源码在github. 显示和查询 使用datagrid显 ...
- php无限级分类实战——评论及回复功能
经常在各大论坛或新闻板块详情页面下边看到评论功能,当然不单单是直接发表评论内容那么简单,可以对别人的评论进行回复,别人又可以对你的回复再次评论或回复,如此反复,理论上可以说是没有休止,从技术角度分析很 ...
- JavaScript学习笔记——对象分类
对象的分类 一.对象的分类 1.内置对象 Global Math 2.本地对象 Array Number String Boolean Function RegExp 3.宿主对象 DOM BOM 二 ...
- (实用篇)PHP递归实现无限级分类
在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性.那么PHP是如何实现无限级分类的呢?我们在本文中使用递归算法并结合mysql数据表实现无限级分类. 在一些复杂的系统中,要求对信 ...
- PHP无限级分类-递归(不推荐)
[http://www.helloweba.com/view-blog-204.html] 在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性.那么PHP是如何实现无限级分类的呢? ...
- php非递归无限级分类.
项目需要.递归无限级分类效率实在太低.理了半天思路写的. 分类越多效率越高. /** * 单次循环返回无限极分类嵌套 * @param array $data 操作的数组 * @param strin ...
- thinkphp实现无限级分类
普通的方法(采用for和foreach) //显示 foreach($data as $k=>$v){ //str_repeat()函数用于把字符串重复指定的次数 $data[$k]['titl ...
- PHP迭代与递归实现无限级分类
无限级分类是开发中常见的情况,因此本文对常见的无限极分类算法进行总结归纳. 1.循环迭代实现 $arr = [ 1=>['id'=>1,'name'=>'父1','father'=& ...
随机推荐
- 011_9*9 乘法表(编写 shell 脚本,打印 9*9 乘法表)
#!/bin/bashfor i in `seq 9`do for j in `seq $i` do echo -n "$i*$j=$[i*j] &q ...
- learning armbian steps(4) ----- armbian 技术内幕
在学习新的框架之前,肯定有一个原型机,通过最普通的指令来实现其功能. 做到这一点之后,所有的东西都不在是秘密,缺的时间进行系统深入的学习. 其实可以自已先来手动构建一个原生的arm 文件系统,基于qe ...
- leetcode解题报告(7):Valid Parentheses
描述 Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the i ...
- [Luogu] 矩阵加速(数列)
题面:https://www.luogu.org/problemnew/show/P1939 题解:https://www.zybuluo.com/wsndy-xx/note/1153810
- bzoj2688 Green Hackenbush
(没有嘟嘟嘟) 权限题,请各位自己想办法交.不过代码正确性是可以保证的,至于为啥那不能说. 刚学完卡特兰数,就给我这种神题,我除了知道\(n\)个点的不同形态二叉树的数目是卡特兰数外,别的就不会了. ...
- ECMAScript 提案阶段
stage0 strawman任何讨论.想法.改变或者还没加到提案的特性都在这个阶段.只有TC39成员可以提交. stage1 proposal (1)产出一个正式的提案. (2)发现潜在的问题,例如 ...
- MySQL数据分析-(2)数据库的底层逻辑
(一) 数据库存在的逻辑 1.案例开篇-大部分公司对于数据和数字的管理都是低效率的 我们要学习数据库,就必须要搞清楚数据库是在什么样的情景下发明并流行的?学习新知识就要搞清楚每个知识点的来龙去脉,这样 ...
- slax中改变终端字体
修改~/.Xresources文件 ! English font Xterm*faceName: DejaVu Sans Mono=True:size=16 修改颜色: ! colos XT ...
- spring+mybatis事务的readonly属性无效
在Spring配置事务中设置的read-only="true"不起作用,仍可以执行写操作:但是其他的正常.查看了一下DataSourceTransactionManager这个类的 ...
- JMeter压力测试及并发量计算-1
一.JMeter的安装(Linux) 1. 下载JMeter:这个就不细说了,直接去(http://jmeter.apache.org/download_jmeter.cgi)下载. 2. 解压:ta ...