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

如何将键值对象转换为值为对象数组的目标格式?

解决方案

你需要将原对象中每个键对应的对象值包装成数组,同时保持整体是一个对象结构,而非数组。你的原代码用map返回了数组,因此格式不符合预期,以下是几种正确实现方式:

方法1:使用Object.fromEntries(简洁推荐)

const payload = {
    "Code1": { "char10": "ch1", "number1": "1", "text1": "txt1" },
    "Code2": { "char2": "ch2", "num2": "2" },
    "Code3": { "text": "txt4" }
};

const result = Object.fromEntries(
  Object.entries(payload).map(([key, value]) => [key, [value]])
);

console.log(JSON.stringify(result, null, 2));

执行后会得到你预期的格式:每个键对应的值是包含原对象的数组,整体仍是一个对象。

方法2:使用reduce遍历构建

const result = Object.entries(payload).reduce((acc, [key, value]) => {
  acc[key] = [value];
  return acc;
}, {});

通过reduce初始化一个空对象,逐个将原对象的键值对转换为「键: [原对象]」的形式存入结果对象。

方法3:手动循环遍历

const result = {};
for (const key in payload) {
  if (payload.hasOwnProperty(key)) {
    result[key] = [payload[key]];
  }
}

最基础的循环方式,直接遍历原对象的每个键,将对应值包装成数组后赋值给新对象的同名键。

原代码问题说明

你用Object.entries(payload).map(...)得到的是一个数组,每个元素是单独的键值对象,这和你需要的「单一对象+数组值」结构不符,所以需要把处理后的键值对重新组合成对象,而非保留数组结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 20:15:08