从嵌套对象提取键值对并转换格式的技术求助
从嵌套对象提取指定键值对生成目标对象
原嵌套对象
const obj = { "success": true, "data": { "data1": { "label": "label1", "value": "value1" }, "data2": { "label": "label2", "value": "value2" } } }
期望生成的对象格式
{data1: "value1", data2: "value2"}
你现有代码的问题
你用map返回的是字符串数组(比如["data1: value1", "data2: value2"]),这和目标对象的结构完全不符,自然得不到想要的结果。
正确实现方案
方案1:用Object.fromEntries快速转换
Object.fromEntries能直接把键值对数组转为对象,代码简洁高效:
const result = Object.fromEntries( Object.entries(obj.data).map(([key, item]) => [key, item.value]) );
方案2:用reduce手动构建对象
如果需要兼容不支持Object.fromEntries的旧环境,reduce是更稳妥的选择:
const result = Object.entries(obj.data).reduce((acc, [key, item]) => { acc[key] = item.value; return acc; }, {});
两种方法最终都会生成你需要的目标对象。
内容的提问来源于stack exchange,提问作者DIR
相关产品推荐
相关产品推荐

