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

从属性名称和值的数组构建嵌套对象的数组

可以通过以下步骤实现:

  1. 创建一个空的结果数组,用于存储最终的嵌套对象数组。
  2. 遍历属性名称和值的数组。
  3. 对于每个属性名称和值对,首先将属性名称拆分为一个字符串数组,以"."作为分隔符。
  4. 创建一个临时对象,用于存储嵌套的属性和值。
  5. 遍历属性名称的字符串数组,逐级构建嵌套对象。
    • 如果当前属性名称在临时对象中不存在,则创建一个新的对象,并将其添加到临时对象中。
    • 如果当前属性名称在临时对象中已存在,并且对应的值是一个对象,则将临时对象更新为该对象。
    • 如果当前属性名称在临时对象中已存在,并且对应的值不是一个对象,则创建一个新的对象,并将其添加到临时对象中。
  • 将属性值赋给最内层的属性。
  • 将临时对象添加到结果数组中。
  • 返回结果数组作为最终的嵌套对象数组。

以下是一个示例实现的JavaScript代码:

代码语言:txt
复制
function buildNestedObjectsFromArray(array) {
  const result = [];

  for (const item of array) {
    const keys = item.name.split('.');
    let temp = {};

    for (let i = 0; i < keys.length; i++) {
      const key = keys[i];

      if (!temp[key]) {
        temp[key] = {};
      } else if (typeof temp[key] !== 'object') {
        temp[key] = {};
      }

      if (i === keys.length - 1) {
        temp[key] = item.value;
      }

      temp = temp[key];
    }

    result.push(temp);
  }

  return result;
}

// 示例用法
const array = [
  { name: 'a.b.c', value: 1 },
  { name: 'a.b.d', value: 2 },
  { name: 'a.e', value: 3 },
  { name: 'f', value: 4 }
];

const nestedObjects = buildNestedObjectsFromArray(array);
console.log(nestedObjects);

该代码将属性名称和值的数组转换为嵌套对象的数组。对于示例输入数组array,输出结果为:

代码语言:txt
复制
[
  { a: { b: { c: 1, d: 2 }, e: 3 }, f: 4 }
]

这个方法可以用于构建具有嵌套结构的配置对象、JSON数据的转换等场景。

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

相关·内容

数组去重获取重复元素(普通数组嵌套对象数组

关于js数组去重获取重复元素,在项目开发中经常会遇到,这里提供个实现思路以供参考。数组主要分为:普通数组对象数组嵌套对象数组)两类。...普通数组:[1,2,3,'a','b']对象数组:[{name:'zhangsan'},{name:'lisi'},{name:'wangwu'}]普通数组去重,以及获取重复元素比较简单,重点是关于对象数组去重...对象数组去重分为两类:根据某一属性去重,去重完全相同对象(属性属性都相同)一、数组嵌套对象,根据对象某一属性去重let arr = [{id:1, name:'test', status:'success...,去重完全相同对象(属性属性都相同)大致思路如下: 首先、循环数组,拿到对象所有属性组成数组; 其次、循环属性数组对象属性对应拼接成字符串;然后、利用 hasOwnProperty 方法判断这个字符串是不是对象...key 是type,value是在indeces中对应数组下标let indices = [] //数组中每一个是一个数组数组每一个元素是原数组中相同type下标 List.map((item

14610

PHPJSON嵌套对象数组解析方法

PHPJSON嵌套对象数组解析方法在PHP编程开发中,JSON是一种非常常用数据格式。它具有简单、轻量和易于解析特点,非常适合用于数据交换存储。...PHP对象,然后通过对象属性或数组键访问嵌套对象数组。...但是需要注意是,如果JSON数据中包含了大量嵌套对象数组,使用json_decode函数进行解析会变得非常繁琐复杂。因此,我们需要寻找更简单高效解析方法。...我们可以使用类似XPath语法来访问嵌套对象数组,非常方便直观。需要注意是,jsonpath库并不是PHP内置库,需要通过composer等方式引入。...我们首先判断当前是否为数组对象,如果是则递归调用parseData函数进行解析,否则直接将存入结果数组中。最终返回结果数组

26410
  • js给数组添加数据方式js 向数组对象中添加属性属性

    参考:https://www.cnblogs.com/ayaa/p/14732349.html js给数组添加数据方式有以下几种: 直接利用数组下标赋值来增加(数组下标起始是0) 例,先存在一个有...(5,8,9); console.log(arr);  此时输出结果是[ 1, 2, 3, 5, 8, 9 ]; 通过 数组名.unshift(参数)来增加从数组第1个数据开始参数,unshift可以带多个参...用 数组名.splice(开始插入下标数,0,需要插入参数1,需要插入参数2,需要插入参数3……)来增加数组数据 let arr=[1,2,3]; //splice(第一个必需参数:该参数是开始插入...\删除数组元素下标,第二个为可选参数:规定应该删除多少元素,如果未规定此参数,则删除从 第一个参数 开始到原数组结尾所有元素,第三个参数为可选参数:要添加到数组新元素) let result=arr.splice...(3,0,7,8,9) console.log(arr);  此时输出结果是[ 1, 2, 3, 7, 8, 9 ]; 因为举例是从第3个下标开始,所以是直接在数组最后开始增加数组内容; js 向数组对象中添加属性属性

    23.4K20

    将Js数组对象某个属性升序排序,并指定数组某个对象移动到数组最前面

    需求整理:   本篇文章主要实现是将一个数组对象属性通过升序方式排序,然后能够让程序可以指定对应数组对象移动到程序最前面。...: 23},{name: "小芳", Id: 18}];   首先把数组Id通过升序方式排序: //源数组 var arrayData= [{name: "夏明", Id:24}, {name:..., Id: 24 },{ name: "小红", Id: 25 }] 找到Id为23对象,移动到数组最前面去(注意Id唯一): 实现原理:因为移除数组对象需要找到对应数组对象下标索引才能进行移除...,现在我们需要移除Id=23对象,让其排到最前面去(先找到对象下标,然后把给数组对象赋值给temporaryArry临时数组,然后在通过下标移除newArrayData中对象,最后将arrayData...v=>v.Id==23); console.log('Id=23索引为:',currentIdx); //把Id=23对象赋值给临时数组 temporaryArry.push(newArrayData

    12.3K20

    java如何打印数组,Java打印数组元素

    大家好,又见面了,我是你们朋友全栈君。 本篇文章帮大家学习java打印数组元素,包含了Java打印数组元素使用方法、操作技巧、实例演示注意事项,有一定学习价值,大家可以用来参考。...以下实例演示了如何通过重载 MainClass 类 printArray 方法输出不同类型(整型, 双精度及字符型)数组:public class MainClass { public static...5.5, 6.6, 7.7 }; Character[] characterArray = { ‘H’, ‘E’, ‘L’, ‘L’, ‘O’ }; System.out.println(“输出整型数组...(“\n输出字符型数组:”); printArray(characterArray); } } 以上代码运行输出结果为: 输出整型数组: 1 2 3 4 5 6 输出双精度型数组: 1.1 2.2 3.3...4.4 5.5 6.6 7.7 输出字符型数组: H E L L O 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/131413.html原文链接:https:/

    4.3K10
    领券