首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在JSON数组中递归查找父级,按上一值反向连接

是指在一个JSON数组中,根据每个元素的某个属性值,递归地查找其父级元素,并将父级元素按照上一值的顺序进行反向连接。

具体实现这个功能的方法如下:

  1. 遍历JSON数组,获取每个元素的属性值和父级属性值。
  2. 创建一个字典(或哈希表)来存储每个元素的属性值和对应的父级属性值。
  3. 遍历JSON数组,将每个元素的属性值和父级属性值存储到字典中。
  4. 创建一个结果数组,用于存储按上一值反向连接后的结果。
  5. 遍历JSON数组,对于每个元素,从字典中获取其父级属性值,并将其添加到结果数组中。
  6. 最后,将结果数组转换为字符串形式,即为按上一值反向连接后的结果。

这个功能在实际开发中可以用于构建树形结构的数据,或者在处理层级关系的数据时进行父级查找和连接。

以下是一个示例代码(使用JavaScript语言):

代码语言:txt
复制
function findParent(jsonArray, key, parentKey) {
  // 创建字典存储属性值和父级属性值
  var dict = {};
  
  // 遍历JSON数组,存储属性值和父级属性值到字典中
  for (var i = 0; i < jsonArray.length; i++) {
    var item = jsonArray[i];
    dict[item[key]] = item[parentKey];
  }
  
  // 创建结果数组
  var result = [];
  
  // 遍历JSON数组,按上一值反向连接父级属性值
  for (var i = 0; i < jsonArray.length; i++) {
    var item = jsonArray[i];
    var parentValue = dict[item[key]];
    
    // 如果存在父级属性值,则添加到结果数组中
    if (parentValue) {
      result.push(parentValue);
    }
  }
  
  // 将结果数组转换为字符串形式
  var reversedString = result.reverse().join('');
  
  return reversedString;
}

// 示例用法
var jsonArray = [
  { id: 1, name: 'A', parent: null },
  { id: 2, name: 'B', parent: 1 },
  { id: 3, name: 'C', parent: 2 },
  { id: 4, name: 'D', parent: 3 }
];

var reversedString = findParent(jsonArray, 'id', 'parent');
console.log(reversedString); // 输出:'321'

在腾讯云的产品中,可以使用腾讯云云数据库(TencentDB)来存储和查询JSON数据,使用腾讯云云函数(SCF)来实现上述功能。具体的产品介绍和使用方法可以参考以下链接:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

PHP使用递归层级查找数据的方法

今天主要介绍下使用递归层级查找数据。...原理挺简单的,主要是通过id的循环查找,使用PHP循环代码也很容易实现,不过如果层级越多,PHP重复代码也越多,这时可以使用递归来实现这功能。...1、首先查出要使用的数据组成数组(避免递归里查询数据库,之后根据这个数组组成自己需要的数据就可以了) 比如得到如下数据: $data = [ ['id' = '1', 'pid' = '0'.../** * 根据id查找子级数据 * @param $data 要查询的数据 * @param int $pid id */ public function recursion($data...", "pid": "0", "dsp": "3" }, { "id": "7", "pid": "3", "dsp": "3-7" } ] 总结 以上所述是小编给大家介绍的PHP使用递归层级查找数据的方法

1.4K41

Web-JavaScript

表示非 ---- 练习 输入个年份,如果是闰年输出yes,否则输出no。 输入三个数,输出三个数的最大。...作为函数调用时,代表类的构造函数,且只能用在子类的构造函数之中。 super作为对象时,指向类的原型对象。 子类的构造函数,只有调用super之后,才可以使用this关键字。...成员重名时,子类的成员会覆盖类的成员。类似于C++的多态。 ---- 静态方法 成员函数前添加static关键字即可。静态方法不会被类的实例继承,只能通过类来调用。...第第delay毫秒后执行。...常用API: new WebSocket('ws://localhost:8080');:建立ws连接。 send():向服务器端发送个字符串。般用JSON将传入的对象序列化为字符串。

6.2K20
  • 代码面试

    该问题将处理链表或数组的循环 当您需要知道某个元素的位置或链表的总长度时。 什么时候应该在上面提到的“两指针”方法使用它?...循环排序模式次在数组迭代个数字,如果要迭代的当前数字不在正确的索引处,则将其与在其正确的索引处的数字交换。...它们将是涉及编号在给定范围内的排序数组的问题 如果问题要求您在排序/旋转数组查找缺失/重复/最小的数字 具有循环排序模式的问题: 查找丢失的号码(简单) 查找最小的遗漏正数() 模式六:就地反转链表...很多问题中,可能会要求您反向链接列表的组节点之间的链接。...您可以使用递归(或使用堆栈进行迭代)遍历时跟踪所有先前的()节点。

    1.8K31

    Java实例教程(下)

    Java array of Hash tablesJava查找数组的数字  Java协变返回类型Java重载主方法Java将阵列更改为列表Java重载Java方法隐藏Java查找交集  另数组的...Java示例从命令行反向字符串Java示例字符串搜索  Java示例String对象搜索Java示例拆分字符串Java示例字符串拆分Java示例转换为大写Java示例字符串区域匹配Java示例比较性能...  Java示例扩展数组Java示例数组扩展Java示例阵列比较Java示例比较两个数组Java示例数组比较示例Java示例删除元素  Java示例阵列删除Java示例从另数组删除数组Java示例从数组查找公共...Java示例从数组查找公共元素Java示例在数组查找对象Java示例检查两个数组的相等性  Java示例数组相等Java示例检查数组相等性Java示例 - 使用Equals方法比较数组Java示例格式化时间显示月份名称的...Java示例字符串已复制Java示例写入文件文件编写完成的Java示例Java示例递归创建目录Java示例隐藏目录  Java示例目录的上次修改时间Java示例目录修改时间Java示例目录Java

    2.9K20

    python语法

    ,返回索引,否则返回-1          str.rfind(substring,[start [,end]]) #反向查找          str.index(substring,[start...,返回的列表可包含重复元素          dict.items()将所有的字典项以列表方式返回,这些列表的每项都来自于(键,),但是项返回时并没有特殊的顺序          dict.update...个类定义静态方法的办法:直接在方法上面添加@staticmethod,去掉方法的self。因为self代表的是个对象。 定义的静态方法可以使用类来调用,也可以使用对象来调用。...对象的属性:定义个方法,该方法添加@property, 就把该方法变成了对象的个属性。访问的方式:对象名.属性名   pp.property   后面没有小括号。...多继承:如果在多继承,多个类含有同函数的话,就从最左边的类找到该函数并执行。

    1.2K30

    TreeTable树形数据列表

    做项目的过程遇到TreeTable,感觉很焦急,于是我就去github上面找,发现很糟糕。上面需要写的代码太过于多,本人手比较懒,所以几番查找。...找到了个比较实用的TreeTable的js 文件的default和vsStyle是两种不同的风格 页面引用就是jquery.treeTable.js就可以了,那么怎么实现树形列表呢?...格式 这里推荐个处理递归数组的Java文件 public class ProjectConstructeTreeList { private List<BimProjectConstruction...就可以通过递归获取二以下节点 resultNodes.add(node);//添加节点 build(node);//递归获取二、...children.isEmpty()) {//如果存在子节点 for (BimProjectConstruction child : children) {//将子节点遍历加入返回

    1.1K10

    2021.7 货拉拉、虾皮、有赞。。。高级前端岗面试整理

    查找变量的时候,会先从当前上下文的变量对象查找,如果没有找到,就会从父(词法层面上的执行上下文的变量对象查找直找到全局上下文的变量对象,也就是全局对象。...如果传递的是字符串,直接修改会报错。单向数据流,每次组件发生更新时,子组件中所有的 prop 都将会刷新为最新的。...如果子组件想修改prop数据: 定义个局部变量,使用prop的赋值 定义个计算属性,处理prop的并返回 Vue父子组件生命周期执行顺序 加载渲染过程 beforeCreate -> created...四次挥手,断开连接。 DNS 协议提供通过域名查找 IP地址,或逆向从 IP地址反查域名的服务。DNS 是个网络服务器,我们的域名解析简单来说就是 DNS 记录条信息记录。...Web Server:请求经过前面的负载均衡后,将进入到对应服务器的 Web Server,比如 Apache、Tomcat 反向代理是工作 HTTP 的,般都是 Nginx。

    1.4K40

    虾皮、OPPO、富途等十几家公司面经总结

    查找变量的时候,会先从当前上下文的变量对象查找,如果没有找到,就会从父(词法层面上的执行上下文的变量对象查找直找到全局上下文的变量对象,也就是全局对象。...如果传递的是字符串,直接修改会报错。单向数据流,每次组件发生更新时,子组件中所有的 prop 都将会刷新为最新的。...如果子组件想修改prop数据: 定义个局部变量,使用prop的赋值 定义个计算属性,处理prop的并返回 Vue父子组件生命周期执行顺序 加载渲染过程 beforeCreate -> created...四次挥手,断开连接。 DNS 协议提供通过域名查找 IP地址,或逆向从 IP地址反查域名的服务。DNS 是个网络服务器,我们的域名解析简单来说就是 DNS 记录条信息记录。...Web Server:请求经过前面的负载均衡后,将进入到对应服务器的 Web Server,比如 Apache、Tomcat 反向代理是工作 HTTP 的,般都是 Nginx。

    88330

    JS的面试题(

    ,向上对象查找,存在则获取,不存在则继续向上查找,最终到Ojbect.prototype,不存在则为undefined 8.解释下原型链 从自身开始,沿着__proto__指向,直到Object.prototype...== 正在执行的函数的函数名,,般用于递归 funciont a(){ console.log(a.caller) } function b(){ a() } b() 函数a函数b调用 a()...有数组索引组成的数组,或由对象属性组成的数组 14.说说深拷贝的理解? 将是基础类型的属性直接拷贝,将数组或者对象的属性进行重新遍历。...对象 instanceof 构造函数 返回为true或false function A(){ } var a = new A() //instanceof A.protptype是否a的原型链 真实作用...abc ,元素的兄弟元素个子元素文字设置为红色,最后个子元素文字设置为蓝色,元素的下个元素逐渐消失之后,元素后面增加个class为newDom的div $(this).click

    11810

    JVM类加载机制

    (3)如果上面的步骤没有出现任何异常,那么C虚拟机实际已经成为了个有效的类或接口了,但在解析完成之前还要进行符号引用验证,确认D是否具有对C的访问权限。...(2)如果通过了第步,类C 查找是否有简单名称和描述符都与目标相匹配的方法,如果有则返回这个方法的直接引用,查找结束。...(3)否则,类C的递归查找是否有简单名称和描述符都与目标相匹配的方法,如果有则返回这个方法的直接引用,查找结束。...(4)否则,类C实现的接口列表以及他们的接口中递归查找是否有简单名称和描述符都与目标相匹配的方法,如果存在相匹配的方法,说明类C是个抽象类这时查找结束,抛出java.lang.AbstractMethodError...(3)否则,接口C的接口中递归查找,直到java.lang.Object类(查找范围包括Object类)为止,看是否有简单名称和描述符都与目标相匹配的方法,如果有则返回这个方法的直接引用,查找结束。

    54330

    前端高频面试题(三)(附答案)

    正向代理,proxy 是 client 设置的,用来隐藏 client;而在反向代理,proxy 是 server 设置的,用来隐藏 server。...迭代查询与递归查询实际,DNS解析是个包含迭代查询和递归查询的过程。递归查询指的是查询请求发出后,域名服务器代为向下域名服务器发出请求,最后向用户返回查询的最终结果。...使用递归 查询,用户只需要发出次查询请求。迭代查询指的是查询请求后,域名服务器返回单次查询的结果。下的查询由用户自己请求。使用迭代查询,用户需要发出 多次的查询请求。...例如 arguments总结: js 的内置对象主要指的是程序执行前存在全局作用域里的由 js 定义的些全局属性、函数和用来实例化其他对象的构造函数对象。...流量控制、传输可靠性功能:QUICUDP的基础增加了层来保证数据传输可靠性,它提供了数据包重传、拥塞控制、以及其他些TCP的特性。

    43120

    个vuepress配置问题,引发的js递归算法思考

    递归函数呀呀呀呀呀呀 elog 同步语雀文档时,会自动创建elog.cache.json缓存文件, vueprss 项目根目录查看。...'DOC' 是文章、为 TITLE 则为目录 uuid:文章 id prent_uuid:节点的 uuid 咱们根据以上参数,编写递归函数, 将elog.cache.json数组递归生成 vuepress...递归函数本质回调自身的函数,用于改造数据结构,重点在于跳出循环的机制,否则陷入死循环啦 # DFS vs BFS ? 什么是 DFS 、BFS ?...咱们先看个家庭关系树状图,爷爷奶奶是属性、父母叔伯二、孙子孙女三属性、重孙们是四属性,以此类推。形成个家庭关系树状图。...从起始节点 'A' 开始,递归访问其邻居节点,并在访问时输出节点的

    29020

    数据结构与算法-面试

    红黑树主要特征是每个节点增加个属性表示节点颜色,可以红色或黑色。红黑树和 AVL 树类似,都是进行插入和删除时通过旋转保持自身平衡,从而获得较高的查找性能。...因为堆排序的过程可能下边的节点会交换到原来相对位置的前边。 快速排序。因为快速排序排序的过程也是需要进行交换的。交换的时候同的相对顺序可能会改变。...简述堆排序 堆排序:将待排序数组看作个树状数组,建立个二叉树堆。通过对这种数据结构进行每个元素的插入,插入后,更新堆的过程,把想等大小的的相对位置上浮的过程可能会改变,不稳定。...最大堆:子节点均小于节点,根节点是树中最大的节点。 最小堆:子节点均大于节点,根节点是树中最小的节点。 简述set Set是种集合。集合的对象不特定的方式排序,并且没有重复对象。...其特点如下: 每个节点有零个或多个子节点; 只有个节点没有节点,该节点称为根节点; 除根节点外,每个节点有且只有节点; 简述二叉查找树 二叉查找树的左子树若不为空,则左子树上所有结点的均小于它的根结点的

    62730

    面试被问:运行个HelloWorld程序JVM都经历了什么

    面试官:别紧张,简答说下运行个HelloWorld程序JVM都经历了什么 首先说下类加载时机 类从被加载到虚拟机内存开始,到卸载出内存为止,它的整个生命周期包括: 加载(Loading) 连接...类或接口解析 当前类为D,未解析符号引用为N,解析为个类或者接口C的直接引用 C非数组,把N的全限定名传给D的类加载器去加载C C是数组,并且数据元素为对象,那么上面描述加载数据元素类型 上面步骤没有异常...查找是否有简单名称和描述符都和目标相匹配的方法,如果有则返回这个方法的直接引用,查找结束 否则,类C的递归查找是否有简单名称和描述符都和目标相匹配的方法,如果有则返回这个方法的直接引用,查找结束...否则,类C实现的接口列表及它们的接口之中递归查找是否有简单名称和描述符都与目标相匹配的方法,如果存在匹配的方法,说明C是个抽象类,这是查找结束抛出java.lang.AbstractMethodError...接口C查找是否有简单名称和描述符都和目标相匹配的方法,如果有则返回这个方法的直接引用,查找结束 否则,接口C的接口中递归查找,知道java.lang.Object类,看是否有简单名称和描述符都与目标相匹配的方法

    62110

    PHP实现无限极分类的两种方式示例【递归和引用方式】

    //第次遍历,找到节点为根节点的节点 也就是pid=0的节点 if ($value['pid'] == $pid){ //节点为根节点的节点,级别为0,也就是第...$value['level'] = $level; //把数组放到list $list[] = $value; //把这个节点从数组移除,减少后续递归消耗...unset($array[$key]); //开始递归,查找ID为该节点ID的节点,级别则为原级别+1 getTree($array, $value[...这会儿的tree数组 河北省已经放进去了 根据php变量传递的规则 你并没有更改tree数组的河北省的数据 所以这里用到了引用传递 //当你对河北省做更改时,tree数组的河北省也并做了更改...数组之后,没有使用引用传递,那么后续对他俩的子节点的操作都没有$tree中生效,现在我们更改下顺序 把邯郸市放到河北省的前面 那么根据咱们的推断 那么邯郸市就应该出现在tree数组里 //邯郸市放到河北省前面的输出结果

    1.8K20

    来自大厂 10+ 前端面试题附答案(整理版)

    (5)其他可以通过些小的优化点来加快打包速度resolve.extensions:用来表明文件后缀列表,默认查找顺序是 ['.js', '.json'],如果你的导入文件没有添加后缀就会按照这个顺序查找文件...,但是如果属性都是基本类型的,使用扩展运算符进行浅拷贝会更加方便方法三:concat 拷贝数组数组的 concat 方法其实也是浅拷贝,所以连接个含有引用类型的数组时,需要注意修改原数组的元素的属性...,因为它会影响拷贝之后连接数组。...有什么解决办法吗并发连接我们知道对于个域名而言,是允许分配多个长连接的,那么可以理解成增加了任务队列,也就是说不会导致个任务阻塞了该任务队列的其他任务,RFC规范规定客户端最多并发2个连接,不过实际情况就是要比这个还要多...子与的情况下 ,有两种方式,分别是回调函数与实例函数。回调函数,比如输入框向组件返回输入内容,按钮向组件传递点击事件等。

    84160

    NPM基本介绍(

    但是第三方模块,模块与模块之间仍然是散列各地的,相互之间不能直接引用。而在模块之外,包和NPM则是将模块连接起来的种机制。...,就会创建了太深的依赖关系树,导致 Windows 很长的目录路径问题 五、模块查找方式(深入浅出Nodejs p16) 1、三个步骤 node引入个模块需要经过三个步骤 路径分析 文件定位 编译执行...模块路径生成规则: 当前目录下的node_modules 目录下的node_modules 目录的目录下node_modules 沿着路径向上逐级递归,直到根目录下的node_modules...npm v3会尽量把逻辑某个层级的模块物理结构全部放在项目的第,具体摘抄为以下: 安装某个二模块的同时,如果发现第层级还没有相同名称的模块,便把这第二层的模块放在第(参考上满模块路径生成规则...安装某个二模块的时,若发现第有相同的名称,相同的版本,便直接复用那个模块 ? 安装某个二模块时,若发现第有相同名称,但是版本却不相同的模块,便只能嵌套在自身的模块下方 ?

    1.6K20

    2021JavaScript面试题(最新)不定时更新(2021.11.6更新)

    对象转字符串 JSON.stringify(obj) 字符串转对象或数组 JSON.parse(str) 其他到布尔类型的的转换规则?...find() 方法为数组的每个元素都调用次函数执行: 当数组的元素测试条件时返回 true 时, find() 返回符合条件的元素,之后的不会再调用执行函数。...unshift() 向数组的开头添加个或更多元素,并返回新的长度。 valueOf() 返回数组对象的原始。 说下字符串的内置的API 记忆顺序: 查找、转换、拷贝/连接、填充、匹配。其他。...如何查找个对象数组 使用find find() 方法返回通过测试(函数内判断)的数组的第个元素的。...find() 方法为数组的每个元素都调用次函数执行: 当数组的元素测试条件时返回 true 时, find() 返回符合条件的元素,之后的不会再调用执行函数。

    2.6K11

    深入理解Java类加载机制-连接

    这里我们来简单说下变量分配,Java的变量其引用类型可以划分为原始类型,和引用类型。...如果在类加载B的过程发生异常,则解析过程失败 如果B是数组类型,将会按照第1点去加载数组元素类型的类,接着由虚拟机生成个代表此数组纬度和元素的数组对象 如果前两个步骤通过了,那么B虚拟机已经成为个有效的类或者接口了...类B查找是否有简单名称和方法描述符都相匹配的方法,如果有,返回这个方法的直接引用,查找结束 否则,B的递归查找是否有匹配的方法,如果有则返回这个方法的直接引用,查找结束 否则,B实现的接口列表和它们的接口中递归查找是否有匹配的方法...解析成功以后,这里假接口B被成功解析,接着会对B的方法进行解析: 如果B是个类不是接口,解析失败,抛出java.lang.IncompatibleClassChangeError 否则,接口B递归查找是否有匹配的方法...,如果有则返回这个方法的直接引用,查找结束 否则,接口B的接口中递归查找,直到java.lang.Object为止,如果找到匹配的方法,则返回这个方法的直接引用,查找结束 否则,方法查找失败,抛出java.lang.NoSuchMethodError

    50010
    领券