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

如何将一维字符串数组转换为嵌套层级的对象?

实现一维数组转嵌套对象的简便方法

当然有简便的实现方式啦!针对你这个需求,我整理了几种既简洁又易懂的方法,都是原生JavaScript就能搞定的:

我们的目标是把一维字符串数组:

const myArr = ['lorem', 'ipsum', 'dolor', 'sit', 'amet']

转换成如下嵌套结构的对象:

{ lorem:{ ipsum:{ dolor:{ sit:{ amet: '' } } } } }

方法一:使用 Array.reduceRight()(最推荐,简洁直观)

这个方法从数组的末尾开始倒序遍历,一步步往前包裹,代码量极少:

const myArr = ['lorem', 'ipsum', 'dolor', 'sit', 'amet'];
const nestedObj = myArr.reduceRight((acc, curr) => ({ [curr]: acc }), '');

console.log(nestedObj);
// 输出: { lorem:{ ipsum:{ dolor:{ sit:{ amet: '' } } } } }

原理说明:初始值设为空字符串'',从最后一个元素amet开始,每次把当前元素作为对象的键,上一步生成的结构作为对应的值,最终就得到了层层嵌套的对象。

方法二:使用 Array.reduce()(正序遍历实现)

如果你习惯从数组开头开始遍历,也可以用普通的reduce,只需要跟踪当前的嵌套层级:

const myArr = ['lorem', 'ipsum', 'dolor', 'sit', 'amet'];
const nestedObj = {};

myArr.reduce((currentLevel, currKey, index) => {
  // 最后一个元素对应空字符串,其他对应空对象
  currentLevel[currKey] = index === myArr.length - 1 ? '' : {};
  // 返回当前新创建的层级,供下一次遍历使用
  return currentLevel[currKey];
}, nestedObj);

console.log(nestedObj);
// 同样得到目标嵌套结构

方法三:递归实现(适合理解嵌套逻辑)

如果想更清晰地拆解嵌套的过程,递归写法会更容易理解:

const buildNestedObject = (arr) => {
  // 数组为空时,返回最终的空字符串
  if (arr.length === 0) return '';
  // 解构出第一个元素和剩余数组
  const [firstKey, ...restArr] = arr;
  // 递归生成嵌套结构
  return { [firstKey]: buildNestedObject(restArr) };
};

const myArr = ['lorem', 'ipsum', 'dolor', 'sit', 'amet'];
const nestedObj = buildNestedObject(myArr);

console.log(nestedObj);
// 结果完全符合需求

这三种方法都能完美实现你的需求,其中reduceRight的写法最简洁,日常开发中用得最多~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:22:30