求助:如何使用.map()将指定JSON转换为目标键值对格式?
解决方案:对象结构转换
没问题,这其实是个挺常见的对象结构转换需求,我来给你拆解下怎么实现~
首先,你的原始数据是一个只包含单个对象的数组,直接对这个数组用map()的话,只会遍历到那一个大对象,没法直接拿到里面的键值对——这应该就是你之前尝试失败的原因。我们需要先把对象拆成键值对数组,再进行转换。
核心实现代码
// 你的原始数据 const originalData = [ { "AF28110": 33456.75, "AF27989": 13297.26 } ]; // 转换逻辑 const transformedData = Object.entries(originalData[0]).map(([name, price]) => ({ name, price })); console.log(transformedData); // 输出结果正好是你要的: // [ { "name": "AF28110", "price": 33456.75}, { "name": "AF27989", "price": 13297.26} ]
步骤解释
- 提取目标对象:
originalData[0]拿到数组里的那个对象; - 转成键值对数组:
Object.entries()方法会把对象转换成[键, 值]格式的二维数组,比如这里会得到[["AF28110", 33456.75], ["AF27989", 13297.26]]; - map遍历转换:用
map()遍历每个键值对,通过解构赋值([name, price])直接取出键和值,返回你需要的{name, price}结构。
扩展:如果原始数组有多个对象
要是你的原始数据里可能包含多个这样的对象(比如[{...}, {...}]),可以用flatMap()来一次性处理,避免得到嵌套数组:
const originalData = [ { "AF28110": 33456.75, "AF27989": 13297.26 }, { "AF12345": 999.99 } ]; const transformedData = originalData.flatMap(item => Object.entries(item).map(([name, price]) => ({ name, price })) ); console.log(transformedData); // 输出:[ {name: "AF28110", price: 33456.75}, {name: "AF27989", price: 13297.26}, {name: "AF12345", price: 999.99} ]
内容的提问来源于stack exchange,提问作者user2062455
相关产品推荐
相关产品推荐

