如何将键值对象转换为值为对象数组的目标格式?
解决方案
你需要将原对象中每个键对应的对象值包装成数组,同时保持整体是一个对象结构,而非数组。你的原代码用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
相关产品推荐
相关产品推荐

