将 JSON 对象转换为 JSON 树

2024-03-10

var obj = [{
    id: 1,
    child:[2,4],
    data : "hello"
},{
    id: 2,
    child:[3],
    data : "I m second"
},
{   
    id: 3,
    child:[],
    data : "I m third"
},
{
    id: 4,
    child:[6],
    data : "I m fourth"
},{
    id: 5,
    child:[],
    data : "I m fifth"
},{
    id: 6,
    child:[],
    data : "I m sixth"
}];

我已将此对象转换为

var newObj = [{
  id: 1,
  child: [{
    id: 2,
    child: [{
      id: 3,
      child: [],
      data: "I m third"
    }],
    data: "I m second"
  }, {
    id: 4,
    child: [{
      id: 6,
      child: [],
      data: "I m sixth"
    }],
    data: "I m fourth"
  }],
  data: "hello"
}, {
  id: 5,
  child: [],
  data: "I m fifth"
}];

这只不过是基于每个属性的子数组的 JSON 树格式。如何解决问题?如何用javascript编写代码?

任何帮助都会很明显。提前致谢。

Jsfiddle https://jsfiddle.net/Rajan_Singh/wydfaq22/


带有临时对象的提案,用于保留对项目的引用。

var array = [{ id: 1, child: [2, 4], data: "hello" }, { id: 2, child: [3], data: "I m second" }, { id: 3, child: [], data: "I m third" }, { id: 4, child: [6], data: "I m fourth" }, { id: 5, child: [], data: "I m fifth" }, { id: 6, child: [], data: "I m sixth" }],
    tree = [];

array.forEach(function (a) {
    if (!this[a.id]) {
        this[a.id] = { id: a.id };
        tree.push(this[a.id]);
    }
    this[a.id].data = a.data;
    this[a.id].child = a.child.map(function (b) {
        this[b] = this[b] || { id: b };
        return this[b];
    }, this);
}, Object.create(null));

document.write('<pre>' + JSON.stringify(tree, 0, 4) + '</pre>');
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 JSON 对象转换为 JSON 树 的相关文章

  • 如何在不阻止触摸启动的情况下防止“过度滚动历史导航”?

    我正在实现基于滑动的导航 但我在使用 Chrome 时遇到了麻烦 当页面向右拖动时 会触发新实现的功能 过度滚动历史导航 从而导致跳回 到 历史 1 为了防止这种情况 我必须打电话 preventDefault on touchstart
  • JavaScript 将键添加到数组中的每个值

    我下面有这个数组 它由一个简单的数组组成 我想要完成的是放一把钥匙id在每个数组值前面以实现类似的效果 id a id b id c id d 有没有一种简单的方法可以做到这一点 任何帮助将不胜感激 谢谢 var test a b c d
  • 来自 iPhone/iPad 的 json Web 服务

    有人可以帮助我解决如何从 iphone 或 ipad 使用 json Web 服务的问题吗 这里我的要求是使用 API 密钥实现 json webservice 如果可能的话发布一些教程或示例链接 谢谢 规范的 JSON 处理库是here
  • C# 和 Javascript SHA256 哈希的代码示例

    我有一个在服务器端运行的 C 算法 它对 Base64 编码的字符串进行哈希处理 byte salt Convert FromBase64String serverSalt Step 1 SHA256Managed sha256 new S
  • 将 Firebase FCM 添加到 ReactJS 应用程序

    我正在尝试向我的 ReactJS 应用程序中的用户发送推送通知 我已添加 firebase 请求用户通知权限 这正在发挥作用 但现在我想注册设备令牌 但这给了我错误 消息传递 我们无法注册默认的 Service Worker 无法注册 Se
  • 检索 css3 缩放元素的宽度/高度

    我正在与 offsetWidth 属性的奇怪之处 我认为 作斗争 这是场景 比方说 我有一个span标签 在我的js中 在某个时刻我执行css3转换 对于这个元素 例如 el set styles transform scale scale
  • 如何在 Web 服务器上设置 gzip 压缩?

    我有一个嵌入式网络服务器 总共有 2 兆空间 通常 您使用 gzip 文件对客户端有利 但这会节省我们在服务器上的空间 我读到你可以只 gzip js 文件并将其保存在服务器上 我在 IIS 上测试过 但没有任何运气 为了使这项工作成功 我
  • 如何仅显示/隐藏此 bootstrapvue 表的第二列和第三列?

    下面的代码将显示 隐藏 a 中的所有列BootstrapVue桌子 代码的来源就是这里的答案 使用 bootstrap vue 组件和 bootstrap 3 动态显示 隐藏列 https stackoverflow com questio
  • 如何使用shell脚本从json字符串中grep特定字段值[重复]

    这个问题在这里已经有答案了 下面是文件中可用的 JSON 字符串 我需要从中提取值status在 shell 脚本中 预期输出 status success 响应 json eventDate null dateProccessed nul
  • ES6继承:使用`super`访问父类的属性

    JavaScript 的super关键字 当我在 Chrome Babel TypeScript 上运行代码时 得到了不同的结果 我的问题是哪个结果是正确的 规范的哪一部分定义了这种行为 下面的代码 class Point getX con
  • 使用 System.Text.Json 即时格式化 JSON 流

    我有一个未缩进的 Json 字符串 例如 hash 123 id 456 我想缩进字符串并将其序列化为 JSON 文件 天真地 我可以使用缩进字符串Newtonsoft如下 using Newtonsoft Json Linq JToken
  • Elasticsearch:预期的字段名称,但得到了 START_OBJECT

    我一直在尝试运行以下查询 但每次运行时都会收到以下错误 nested ElasticsearchParseException Expected field name but got START OBJECT field value fact
  • 如何为我的整个 Node.js 应用程序使用相同的 MySQL 连接?

    我有一个app js 我从那里运行我的整个应用程序 在 app js 内部 我require许多文件中都有代码 对于每个文件 我都这样做 var mysql require mysql var mclient mysql createCon
  • Javascript 浮点乘以 100 仍然有错误

    我有一个货币字段的文本输入 我在字段中输入 33 91 并在尝试使用 乘以 100 技术时得到以下结果 var curWth parseInt trans withdraw index val 100 3390 var curWth par
  • 如何在画布上所有其他内容后面绘制图像? [复制]

    这个问题在这里已经有答案了 我有一块画布 我想用drawImage在画布上当前内容后面绘制图像 由于画布上已经有内容 我正在使用字面上的画布来创建包含图像的画布 因此我无法真正先绘制图像 所以我无法使用drawImage在我呈现其余内容之前
  • 尝试使用 Javascript 解决对称差异

    我正在尝试找出对称的解决方案 使用 javascript 完成以下任务的差异 目标 接受未指定数量的数组作为参数 保留数组中数字的原始顺序 不删除单个数组中数字的重复项 删除数组中出现的重复项 因此 例如 如果输入是 1 1 2 6 2 3
  • 使用 ref 触发反应 dropzone 不起作用

    我正在实现这个库 https github com felixrieseberg React Dropzone Component https github com felixrieseberg React Dropzone Compone
  • 为什么 Node.js 应用程序只能从 127.0.0.1/localhost 访问?

    我本来打算教我的朋友介绍 Node 但是后来 我想知道为什么这个代码来自nodejs org var http require http http createServer function req res res writeHead 20
  • 确定 Javascript 中的日期相等性

    我需要找出用户在 Javascript 中选择的两个日期是否相同 日期以字符串 xx xx xxxx 形式传递给该函数 这就是我需要的全部粒度 这是我的代码 var valid true var d1 new Date datein val
  • 使用随机放置的 NaN 创建示例 numpy 数组

    出于测试目的 我想创建一个M by Nnumpy 数组与c随机放置的 NaN import numpy as np M 10 N 5 c 15 A np random randn M N A mask np nan 我在创建时遇到问题mas

随机推荐

  • JTable 上只能编辑一行

    我正在尝试制作一种特殊的 jtable 我希望整个表默认不可编辑 但是 当用户单击一行 然后单击 编辑 j 按钮时 该特定行是可编辑的 一旦他们取消选择该行 它就不再可编辑 我该怎么做呢 要控制哪些单元格可编辑 您需要扩展 JTable 或
  • 未为 ALB 侦听器列出导入的 SSL 证书

    我已通过 DigiCert 创建了 SSL 证书并导入到 ACM 我要求将相同的 SSL 应用于 ALB 和应用程序 并且由于无法导入 ACM 证书 所以我必须遵循这种方式 我已成功导入 SSL 并且可以在控制台中看到它 但是 我无法将其应
  • 教程中的错误(使用 iml 包解释机器学习模型)

    当我尝试在标题为 复制要求 的部分中执行以下代码时 出现以下错误 https uc r github io iml pkg https uc r github io iml pkg classification data df lt rsa
  • 有没有办法使用 Maven Surefire 插件让 junit“快速失败”?

    我目前正在使用maven 开发一个java 项目 我们使用 Maven Surefire 插件来运行我们的 junit 套件作为构建过程的一部分 我们的测试套件在覆盖范围和执行时间方面都在快速增长 当您等待十分钟才发现测试在测试的第一分钟失
  • NAudio 算法播放正弦波,其频率可以实时平滑地改变[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 到目前为止 我已经实现了在此找到的算法博客文章 http mark dot net blogspot com 2009
  • 如何阻止 MS Access 更改我的 SQL 代码?

    我在 MS Access 中编写了一个 SQL 查询 但 Access 把它搞得一团糟 只是为了 图形化 地显示它 我该如何阻止它这样做 如果将 SQL 保存为 QueryDef 对象 即使用图形查询编辑器 则无法阻止 Access 更改
  • 通过 JSON 将数据从 android 发送到服务器

    我有 MySQL 数据库服务器 我需要通过 JSON 更新 MySQL 服务器和从 MySQL 服务器检索数据 所以 我想知道如何做到这一点 并且我对这个示例语句感到非常困惑 HttpPost httppost new HttpPost h
  • 如何在Android模拟器上使用Xposed框架

    我正在尝试使用 API 17 但无法打开Xpose框架 http forum xda developers com showthread php t 1574401 确切的步骤是 启动模拟器 分区大小为 1024 adb install X
  • 对阶乘和多项式的组合进行数值计算

    我正在尝试编写一个简短的 C 例程来计算给定整数 j gt i 通常它们位于 0 到 100 之间 和复数 z 以 z 关联拉盖尔多项式 问题是我希望这个函数可以从 CUDA 内核中调用 即使用 device 属性 因此 标准库 Boost
  • Dart:异步抽象方法

    我正在尝试设计一个接口来抽象不应直接从 UI 使用的长时间运行的操作 为了抽象它 我创建了一个抽象类 其中包含执行此类操作的唯一方法 abstract class MakeSomething Result make Param param
  • 如何出现“创建目标表后架构已更改”错误?

    当我的 Web 应用程序尝试在 MSSQL 2005 数据库上执行 SELECT INTO 时 我遇到了此错误 我确实有两个问题 这个错误是什么意思以及这是如何发生的 有没有办法通过以不同的方式编码来防止这些错误 除了明显的情况之外 有人在
  • 适用于 Windows 的优秀开源错误跟踪/问题跟踪软件 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Android 未使用/查找我的希伯来语本地化。

    我正在努力将我的应用程序本地化为多种语言 西班牙语运行良好 但希伯来语没有出现 让我困惑的是 如果我将希伯来语字符串文件夹的内容放在西班牙语文件夹 values es 中 它会很好用 我的希伯来语文件夹中的西班牙语 值 他 不起作用 任何想
  • SQL Case 语句在 where 子句中指定条件?

    我有以下查询 SELECT FROM dbo tblOrders o WHERE o OrderId IN SELECT Value FROM dbo udf GenerateVarcharTableFromStringList Order
  • 相当于 git 的“svn checkout”?

    我应该使用什么 git 命令来相当于svn checkout git checkout 非常感谢 git clone https www kernel org pub software scm git docs git clone html
  • ftp 在 java 中无法正确下载文件?

    当我使用以下代码下载文件时 它只是将文件写入本地目的地 但文件大小均为零 有人能说为什么会发生这种情况以及如何解决它吗 import org apache commons net ftp FTPClient import org apach
  • BIOS 是否将 512 字节引导加载程序复制到 0x7c00

    我正在编写内核 在写这么复杂的东西之前 我认为对内核 引导加载程序 寄存器 BIOS 等进行一些理论阅读不仅会有所帮助 而且是必要的 本文 http lennartb home xs4all nl bootloaders node3 htm
  • 如何在 iTextSharp 中调整字体大小以填充固定高度的表格单元格

    我正在从 iTextSharp 创建 PDF 进行打印 我有可变长度的文本 我希望始终采用最大字体大小来填充固定高度的表格单元格 而不会在视线之外环绕 如何才能做到这一点 您首先需要能够测量所选字体中文本的宽度 来自 iTextSharp
  • 是否可以在经典asp中进行友好的url(url重写)?

    我知道如何在 asp net 中创建 实现友好的 url 但是是否可以 如果可以的话 如何 在经典 asp 中执行此操作 如果不可能 谷歌将如何响应 SEO 创建其唯一目的是重定向 加载时 到不同页面的页面 thanks Use a URL
  • 将 JSON 对象转换为 JSON 树

    var obj id 1 child 2 4 data hello id 2 child 3 data I m second id 3 child data I m third id 4 child 6 data I m fourth id