首页
学习
活动
专区
工具
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数据的转换等场景。

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

相关·内容

43分33秒

73 数组的定义和使用

5分25秒

046.go的接口赋值+嵌套+值方法和指针方法

15分49秒

day06_Eclipse的使用与数组/11-尚硅谷-Java语言基础-数组元素的默认初始化值

15分49秒

day06_Eclipse的使用与数组/11-尚硅谷-Java语言基础-数组元素的默认初始化值

15分49秒

day06_Eclipse的使用与数组/11-尚硅谷-Java语言基础-数组元素的默认初始化值

1分43秒

C语言 | 用指向元素的指针变量输出二维数组元素的值

15分17秒

day06_Eclipse的使用与数组/19-尚硅谷-Java语言基础-二维数组元素默认初始化值

15分17秒

day06_Eclipse的使用与数组/19-尚硅谷-Java语言基础-二维数组元素默认初始化值

15分17秒

day06_Eclipse的使用与数组/19-尚硅谷-Java语言基础-二维数组元素默认初始化值

6分51秒

day06_Eclipse的使用与数组/18-尚硅谷-Java语言基础-二维数组的长度和遍历

6分51秒

day06_Eclipse的使用与数组/18-尚硅谷-Java语言基础-二维数组的长度和遍历

6分51秒

day06_Eclipse的使用与数组/18-尚硅谷-Java语言基础-二维数组的长度和遍历

领券