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

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

相关·内容

没有搜到相关的沙龙

领券