js面试题解析
来源:互联网 发布:女装淘宝店铺起名字 编辑:程序博客网 时间:2024/06/05 19:02
题目一:
将下面给出的数据重新排列成有规律的树结构,并且将该节点的子节点放置在该节点的children属性内:
说明: PID为改对象的父级id
var json=[ { "id":"1", "PID":"0", "text":"父亲1" }, { "id":"11", "PID":"1", "text":"子1" }, { "id":"200", "PID":"112", "text":"子112的孩子" }, { "id":"112", "PID":"11", "text":"子12" }, { "id":"2", "PID":"0", "text":"父亲2" }, { "id":"21", "PID":"2", "text":"子2" } ];
分析:
1.要想将给定的数据排序成树状结构,首先明确两者的连接关系: PID 和 id2.若想将给定的数据排序成树状结构,只需将相邻的父子节点连接在一起
算法:
var setting = { data: { simpleData: { id: "id", pid: "PID", }, key: { children: "children" } } }; function handleTree(json){ var mapObj={}, result = [], //返回结果 pid = setting.data.simpleData.pid, id = setting.data.simpleData.id, childern =setting.data.key.children; //将json中的每一项的id为键,每一项为值保存在mapObj中 for (let i = 0,length = json.length; i < length; i++){ mapObj[json[i].id] = json[i]; } for (let i = 0,length = json.length; i < length; i++){ //判断是否有父节点 if (mapObj[json[i][pid]] && json[i][id] != json[i][pid]){ //有父节点 if ( ! mapObj[json[i][pid]][childern]){ //如果当前当前元素的父节点没有children属性,则创建 mapObj[json[i][pid]][childern] = []; } mapObj[json[i][pid]][childern].push(json[i]); }else{ //没有父节点 result.push(json[i]); } } return result; } var r = handleTree(json); console.log(r);
阅读全文
0 0
- js面试题解析
- 解析js面试题(上)
- js 解析器 面试题 闭包
- 尝试解析js面试题(一)
- 尝试解析js面试题(二)
- 关于js原型的经典面试题解析
- C++面试题解析
- JAVA面试题解析
- 指针面试题解析
- C++面试题解析
- C++面试题解析
- Java面试题解析:
- Block面试题解析
- Block面试题解析
- PHP 面试题解析
- 面试题解析
- C++面试题解析
- Golang面试题解析
- APP加固技术历程及未来级别方案:虚机源码保护
- libevent 多线程实现高并发
- 算符优先文法的编程实现
- hive快速上手
- ORA-00054: 资源正忙, 但指定以 NOWAIT 方式获取资源, 或者超时失效
- js面试题解析
- java.lang.NoSuchMethodError异常可能出现的原因
- 去掉输入框选择框等在移动端聚焦时出现一闪的情况
- 有分段函数如下,求age(5)。age(n)=10 (n=1) age(n)=age(n-1)+2 n>1
- 大型网站技术架构(四)——网站的高性能架构
- Ubuntu 16.04,双显卡,GTX1060,安装 NVIDIA 显卡驱动
- iis运行网站项目无法加载或初始化请求的服务提供程序
- KM
- Java IO流分析整理