You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaScript中从指定格式字符串构建嵌套对象?

解决方案

这问题我之前处理类似配置字符串的时候碰到过,其实用字符串拆分加简单循环就能轻松实现,给你写个具体的JavaScript实现:

首先,我们可以把整个过程拆成三步:拆分键值对、拆分嵌套键路径、逐层构建对象。

完整代码示例

const str = "class1.class2.class3=d23dasdasd23dasdasdas";

// 1. 拆分键路径和对应的值
const [keyPath, value] = str.split('=');
// 2. 将嵌套的键路径拆分为单个键的数组
const keys = keyPath.split('.');

// 3. 逐步构建嵌套对象
const result = {};
let currentLevel = result;

for (let i = 0; i < keys.length; i++) {
  const currentKey = keys[i];
  // 如果是最后一个键,直接赋值
  if (i === keys.length - 1) {
    currentLevel[currentKey] = value;
  } else {
    // 否则创建新的空对象,进入下一层级
    currentLevel[currentKey] = {};
    currentLevel = currentLevel[currentKey];
  }
}

console.log(result);
// 输出结果:{ class1: { class2: { class3: 'd23dasdasd23dasdasdas' } } }

代码解释

  • 拆分键值对:用split('=')把原字符串切成两部分,左边是嵌套的键路径,右边是对应的值,用解构赋值直接拿到这两个部分。
  • 拆分键路径:再用split('.')把键路径拆成单个键的数组,比如['class1', 'class2', 'class3']。
  • 构建嵌套对象:用currentLevel变量跟踪当前正在操作的对象层级,遍历每个键:
    • 如果是最后一个键,就把值直接赋给当前层级的这个键;
    • 如果不是最后一个,就创建一个新的空对象,然后把currentLevel指向这个新对象,继续往下构建下一层。

可复用函数版本

如果需要多次处理这类字符串,可以封装成一个函数:

function convertStrToNestedObj(inputStr) {
  const [keyPath, value] = inputStr.split('=');
  const keys = keyPath.split('.');
  const result = {};
  let currentLevel = result;

  keys.forEach((key, index) => {
    if (index === keys.length - 1) {
      currentLevel[key] = value;
    } else {
      currentLevel[key] = {};
      currentLevel = currentLevel[key];
    }
  });

  return result;
}

// 使用示例
const targetObj = convertStrToNestedObj("class1.class2.class3=d23dasdasd23dasdasdas");
console.log(targetObj);

如果你的值需要转换为数字、布尔等类型,可以在赋值前加个类型判断逻辑,不过按照你给出的需求,直接赋值字符串就足够啦。

内容的提问来源于stack exchange,提问作者Aumy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:21:07