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

如何将含动态索引键的JS对象转换为指定结构?

对象结构转换的最优实现方式

针对你的对象转换需求,可以通过遍历原对象键值对+正则提取关键信息的方式实现,这是时间复杂度O(n)的线性最优方案,具体代码如下(以JavaScript为例):

const originalObj = {
    "props[EYE][0]": "Yellow",
    "props[EYE][1]": "Blue",
    "props[BODY][0]": "BATMAN",
    "props[BODY][1]": "SUPERMAN"
};

const transformedObj = {};

// 遍历原对象所有键值对
for (const [key, value] of Object.entries(originalObj)) {
    // 正则匹配提取类型(如EYE、BODY)和索引
    const matchResult = key.match(/props\[(\w+)\]\[(\d+)\]/);
    if (matchResult) {
        const type = matchResult[1];
        const newKey = `props-${type}`;
        const index = parseInt(matchResult[2], 10);
        
        // 初始化数组(避免覆盖已有数据)
        if (!transformedObj[newKey]) {
            transformedObj[newKey] = [];
        }
        // 按索引赋值,兼容非连续索引场景
        transformedObj[newKey][index] = value;
    }
}

console.log(transformedObj);

关键说明:

  • 用Object.entries遍历原对象,确保所有键值对都被处理,不会遗漏
  • 正则表达式精准匹配键的结构,动态提取[EYE]/[BODY]这类动态内容和索引值
  • 每次处理前先检查新键是否存在,不存在则初始化空数组,这是解决你之前只拿到第一个值的核心——避免每次都用新数组覆盖已有数据
  • 如果确定索引是从0开始的连续数字,也可以用transformedObj[newKey].push(value)替代索引赋值,代码会更简洁

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 23:20:34