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

如何通过父id-s (JavaScript)加深数组

父id-s是一种常见的数据结构,用于表示具有层次结构的数据。它通常用于构建树形结构或多级分类系统。在JavaScript中,可以通过父id-s来加深数组,即将扁平的数组转换为具有层次结构的数组。

下面是一种实现方法:

  1. 创建一个空对象,用于存储最终的层次结构数据。
  2. 遍历原始数组,对每个元素执行以下操作:
    • 获取当前元素的父id。
    • 如果父id不存在或为空,则将当前元素添加到根级别。
    • 否则,查找父id对应的节点,并将当前元素添加为其子节点。
  3. 返回构建好的层次结构数据。

以下是一个示例代码:

代码语言:javascript
复制
function deepenArray(arr) {
  const result = {};
  
  arr.forEach(item => {
    const parentId = item.parentId;
    
    if (!parentId || parentId === "") {
      // 当前元素没有父id,添加到根级别
      result[item.id] = item;
    } else {
      // 查找父id对应的节点,并将当前元素添加为其子节点
      const parent = result[parentId];
      
      if (!parent.children) {
        parent.children = [];
      }
      
      parent.children.push(item);
    }
  });
  
  return Object.values(result);
}

// 示例数据
const data = [
  { id: 1, name: "A", parentId: "" },
  { id: 2, name: "B", parentId: "" },
  { id: 3, name: "A1", parentId: 1 },
  { id: 4, name: "A2", parentId: 1 },
  { id: 5, name: "B1", parentId: 2 },
  { id: 6, name: "B2", parentId: 2 },
  { id: 7, name: "A11", parentId: 3 },
  { id: 8, name: "A12", parentId: 3 },
];

const deepenedArray = deepenArray(data);
console.log(deepenedArray);

该代码将根据父id-s将原始数组转换为具有层次结构的数组。你可以根据实际情况修改代码以适应你的数据结构和需求。

对于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体的云计算品牌商,我无法提供相关链接。但你可以通过访问腾讯云官方网站,查找他们的云计算产品和相关文档,以获取更多信息。

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

相关·内容

  • 如何在 JavaScript 中将数组转为对象

    JavaScript 的对象(Object),本质上是键值对的集合(Hash 结构),但是传统上只能用字符串当作键。 如果我们想把某个东西转换成一个对象,我们需要传递具有这两个要求的东西:键和值。...满足这些要求的参数有两种类型: 具有嵌套键值对的数组 Map 对象 将数组转为对象 1.Object.fromEntries方法 const newArray = [ ['key 1', 'value...toObject(map) // { key1: 'value1', key2: 'value2' } 4.Underscore 和 Lodash工具集合框架 Lodash是一个具有一致接口、模块化、高性能的JavaScript...', 'value1'], ['key2', 'value2'] ] _.fromPairs(array) // { key1: 'value1', key2: 'value2' } 将对象转为数组...Object.entries方法 Object.entries 方法返回一个给定对象自身可枚举属性的键值对数组。

    74310

    【说站】javascript如何展开多维数组

    javascript如何展开多维数组 说明 1、flat()接受可选参数,该参数指定的嵌套数组应展平。 如果没有提供参数,默认值1:如果输入Infinity参数,无论多少维数组都会展平。...使用提供函数的返回值创建新的数组,然后连接该数组的所有子数组元素。 flat()方法可以将多维数组展平成一维数组。如果提供的数组中有空值,它们将被丢弃。...[1, 2, 3, [4, 5], 6]; let array_1_result = array_1.flat(); array_1_result // [1, 2, 3, 4, 5, 6] 以上就是javascript...展开多维数组的方法,希望对大家有所帮助。...更多Javascript学习指路:Javascript 推荐操作环境:windows7系统、jquery3.2.1版本,DELL G3电脑。

    1.3K10

    【JavaScript】数组 ④ ( JavaScript 数组新增元素 | 先修改数组长度再填充元素 | 通过索引值追加数组元素 | 使用 push 函数追加数组元素 )

    一、JavaScript 数组新增元素 1、先修改数组长度再填充元素 数组 的 length 属性 是 可读写的 , 读取 length 属性 : 通过 length 属性 可以 获取 数组 的长度 ,...修改 length 属性 : 通过 修改 length 属性 可以 改变 数组 的长度 ; 如果 想要 增加 数组元素 , 首先 , 修改 length 属性 , 将 length 属性值增大 , 实现数组扩容操作...maximum-scale=1.0,minimum-scale=1.0"> JavaScript... 执行结果 : 2、通过索引值追加数组元素 原来的 JavaScript 数组中 有 n 个元素 , 其索引值范围是.../script> 执行结果 : 3、使用 push() 函数追加数组元素 调用 JavaScript 的 push() 方法可向数组的末尾添加

    17710

    如何用JavaScript进行数组去重

    今天的文章和大家谈一谈如何用JavaScript进行数组去重,这是一道常见的面试(笔试)题,可以很好地考察出一个人的逻辑思维及边界考虑情况,希望此文能够帮助大家在解决类似问题时拓宽思路。...我们先审题:数组,题目中并没有说是什么样的数组,即数组的组成元素可能是字符串、数字、布尔、数组、对象、Null、Undefined。 在开始之前我们先看看这些类型以及他们的值比较关系: ?...好了,回归正题,我们要进行数组去重,那么先想个大致的思路,比如: 1)新建一个空数组,老数组从第一个开始,看看新数组中有没有,如果没有就push进入新数组,如果存在就下一个。...3)对于是非数组的对象,针对几个key的值是一样的情况,我们将其认定是一样的。...== "object" || _b === null) { // 有非引用类型(数组与对象)或者有NULL类型时直接判断 return _a === _b; } // _a _b 不同为数组或者对象时

    96450

    如何使用 JavaScript 对数值数组进行排序?

    在 JavaScript 中,有两种方法可以按特定顺序对数值数组进行排序 通过在循环的帮助下遍历数组通过使用 JavaScript 中提供的 sort() 方法让我们详细讨论上述两种方法,并对数值数组进行排序...第 4 步 - 在第四步中,我们将定义另一个 JavaScript 函数,该函数将通过使用嵌套循环相互比较来对数组的元素进行排序,并将其作为值分配给第二步中添加的第二个按钮的 onclick 事件。...例下面的示例将解释如何借助两个嵌套循环按升序对数值数组进行排序 通过使用 sort() 方法sort() 方法是 JavaScript 提供的用于对数组元素进行排序的方法。它将数组的所有值视为字符串,然后比较它们进行排序。...语法以下语法将让您知道如何将 sort() 方法与数组一起使用来对其进行排序 array_name.sort( comparator_function ); 让我们通过在 JavaScript 代码示例中实现它来实际理解它

    19810

    如何删除 JavaScript 数组中的虚值

    falsy 有时写作 falsey 在 JavaScript 中有很多方法可以从数组中删除元素,但是从数组中删除所有虚值的最简单方法是什么?...---- 算法说明 从数组中删除所有虚值。 JavaScript 中的虚值是 false、 null、 0、 ""、 undefined 和 NaN。 提示:尝试将每个值转换为布尔值。...数据结构:在这里我们将坚持使用数组。 我们来谈谈.filter(): .filter()创建一个新数组,其中包含通过所提供函数测试的所有元素。...换句话说,.filter() 遍历数组中的每个元素并保留通过其中某个测试的所有元素。数组中未通过该测试的所有元素都被过滤掉了 —— 被删除了。...这是一个很好的提示,因为我们可以用 .filter() 返回只有真值(truthy)的数组。 我们将通过JavaScript类型转换来实现这一目标。

    9.5K20

    如何用JavaScript实现数组扁平化

    什么是数组扁平化 将嵌套多层的数组“拉平”,变为一维数组。 为什么要数组扁平化 去除冗余,厚重和繁杂的装饰效果。...如何进行数组扁平化 方法一:递归实现 思路就是通过循环递归的方式,一项一项的去遍历,如果每一项还是一个数组,那么就继续往下遍历,利用递归程序的方法,来实现数组每一项的连接 let arr=[1,[2,...item))){ arr=[].concat(...arr); } return arr; } flatten(arr);// [1,2,3,4,5] 方法四:split和toString 可以通过...split和toString两个方法来共同实现数组扁平化,由于数组会默认带一个toString方法,所以可以把数组直接转换成逗号分隔的字符串,然后再用split方法把字符串重新转换为数组。...return arr.flat(Infinity); } flatten(arr);// [1,2,3,4,5] 方法六:正则和JSON方法 先用JSON.stringify的方法转换为字符串,然后通过正则表达式过滤掉字符串中的数组的方括号

    54020

    如何使用 JavaScript 将数组拆分为偶数块

    数组是JavaScript编程中最常用的结构之一,这也是为什么了解它的内置方法很重要。 在本文中,我们研究一下如何在 JS 中将数组拆分为n个大小的块。...原始数组不会被改变。 注意:start和end都可以是负整数,这仅表示它们是从数组末尾枚举的。 -1是数组的最后一个元素,-2是倒数第二个,依此类推......console.log(sliceIntoChunks(arr, 3)); 运行结果: [[ 1, 2, 3 ], [ 4, 5, 6 ], [ 7, 8, 9 ], [ 10 ]] 在上面的代码中,我们通过遍历数组并按每个...1, 4] let chunk = arrTest.splice(0,2) console.log(chunk) // [2, 3] console.log(arrTest) // [1, 4] 我们通过一个代码示例来实际了解这一点...在此过程中,我们学习了如何使用几个内置的数组方法,如slice()和splice()。 ~完,我是刷碗智,我要去刷碗了,我们下期见!

    2.7K20
    领券