利用递归的方式在JSON 数据中找到某个节点的多有父节点
在项目中遇到的问题-- 一个级联题,知道答案id 后将每一级的选项展示出来
例如 级联题的 json 数据是
[
{
name: '北京',
id: 1,
children:[
{
name: '朝阳',
id: 3,
children: [
{
name: '北京站',
id: 9
}
]
},
{
name: '海淀',
id: 4,
children: [
{
name: '中关村',
id: 10
}
]
}
] },
{
name:'河北',
id:2,
children:[
{
name: '张家口',
id: 5,
children:[
{
name: '宣化',
id: 7
}
]
},
{
name: '石家庄',
id: 6,
children: [
{
name: '无极',
id: 8
}
]
}
]
}
]
现在知道 获取到的最后一级答案 id 是10 将所有选中的菜单计算出来
function getcascade (opts,opt,path) {
  if (path===undefined) {
    path = []
  }
  for(var i=0;i<opts.length;i++){
    var temPath = path.concat()
    temPath.push(opts[i].name)
    if (opt == opts[i].id){
      return temPath
    }
    if (opts[i].children){
      var findResult = getcascade(opts[i].children,opt,temPath)
      if (findResult){
        return findResult
      }
    }
  }
}
let list = getcascade(json,10)
console.log(list)
得到结果
该递归方法中用到了 数组的concat 方法 该方法连接两个数组 不改变原数组,
在循环调用当中 遇到return 后直接返回结果 跳出函数。
利用递归的方式在JSON 数据中找到某个节点的多有父节点的更多相关文章
- 我的Android进阶之旅------>解决Jackson、Gson解析Json数据时,Json数据中的Key为Java关键字时解析为null的问题
		1.问题描述 首先,需要解析的Json数据类似于下面的格式,但是包含了Java关键字abstract: { ret: 0, msg: "normal return.", news: ... 
- J2EE Web开发入门—通过action是以传统方式返回JSON数据
		关键字:maven.m2eclipse.JSON.Struts2.Log4j2.tomcat.jdk7.Config Browser Plugin Created by Bob 20131031 l ... 
- 基于Web Service的客户端框架搭建一:C#使用Http Post方式传递Json数据字符串调用Web Service
		引言 前段时间一直在做一个ERP系统,随着系统功能的完善,客户端(CS模式)变得越来越臃肿.现在想将业务逻辑层以下部分和界面层分离,使用Web Service来做.由于C#中通过直接添加引用的方来调用 ... 
- 从JSON数据中取出相关数据
		参考: http://www.cnblogs.com/shuilangyizu/p/6019561.html JSON数据如下: { "total": 1, "rows& ... 
- 处理Json数据中的日期类型.如/Date(1415169703000)/格式
		在asp.net mvc后台返回到视图中的json数据中想对数据进行操作,发现日期类型无法直接进行操作,需要转换为指定格式才行.在网上也搜了下方法也很多,觉得有点麻烦,最终使用正则搞定了,分享下: v ... 
- C#调用接口返回json数据中含有双引号 或其他非法字符的解决办法
		这几天,调用别人接口返回json数据含有特殊符号(双引号),当转换成json对象总是报错, json字符格式如下 { "BOXINFO":[ { ", "ITE ... 
- 前端ajax用post方式提交json数据给后端时,网络报错 415
		项目框架:spring+springmvc+mybatis 问题描述:前端ajax用post方式提交json数据给后端时,网络报错 415 前端异常信息:Failed to load resource ... 
- 【Python】利用递归函数调用方式,将所输入的字符串,以相反的顺序显示出来
		源代码: """ 利用递归函数调用方式,将所输入的字符串,以相反的顺序显示出来 string_reverse_output():反向输出字符串的自定义函数 pending ... 
- 二叉树中两节点的最近公共父节点(360的c++一面问题)
		面试官的问题:写一个函数 TreeNode* Find(TreeNode* root, TreeNode* p, TreeNode* q) ,返回二叉树中p和q的最近公共父节点. 本人反应:当时有点 ... 
随机推荐
- Markdown使用指南
			1. Markdown是什么? Markdown是一种轻量级标记语言,它以纯文本形式(易读.易写.易更改)编写文档,并最终以HTML格式发布. Markdown也可以理解为将以MARKDOWN语法编写 ... 
- django_day04
			django_day04 路由 from django.conf.urls import url urlpatterns = [ url(正则表达式, views视图,参数,别名), ] 正则表达式 ... 
- Linux下以tar包的形式安装mysql8.0.28
			Linux下以tar包的形式安装mysql8.0.28 1.首先卸载自带的Mysql-libs(如果之前安装过mysql,要全都卸载掉) rpm -qa | grep -i -E mysql\|mar ... 
- Openstack Neutron : 安全
			目录 - iptable:起源 - tables - chains - rules - 方向 - Security group 安全组: - Firewall 防火墙: - 更高的安全 - 无处安放的 ... 
- js中的对象和数组的创建
			<!DOCTYPE html><html><head> <title>获取控制</title> <meta charset=" ... 
- 万星开源项目强势回归「GitHub 热点速览 v.22.38」
			本周霸榜的 GitHub 项目多为老项目,比如:老面孔的 theatre 凭借极其优秀的动画功底连续三天霸榜 TypeScript 类目.借 Figma 被 Adobe 收购之风,又出现在 GitHu ... 
- Mybatis框架搭建
			Mybatis框架搭建 思路: 搭建环境 导入Mybatis 编写代码 测试 一.搭建环境 创建数据库 /* Navicat Premium Data Transfer Source Server ... 
- 3_JavaScript
			一. 介绍 JavaScript语言诞生主要是完成页面的数据验证, 因此它运行在客户端, 需要运行浏览器来解析执行JavaScript代码 JS是弱类型, Java是强类型 特点 交互性(它可以做的就 ... 
- 编码中的Adapter,不仅是一种设计模式,更是一种架构理念与解决方案
			大家好,又见面了. 不知道下面这玩意大家有没有见过或者使用过?这是一个插座转换器.我们都知道日常使用的是220v的交流电,而国外不同国家使用的电流电压是不一样的(比如日本使用的是110v).且插座的接 ... 
- 一文搞定 Spring事务
			Spring 事务 上文 使用SpringJDBC 1.JDBC事务控制  不管你现在使用的是那一种ORM开发框架,只要你的核心是JDBC,那么所有的事务处理都是围绕着JDBC开展的,而JDBC之中 ... 
