如何使用Javascript重构获取到的嵌套JSON对象
用JavaScript重构JSON对象的实用方案
嘿,我猜你是想把拿到的JSON数据转换成更贴合业务需求的结构对吧?我给你举个常见场景的示例,你可以照着这个思路适配自己的实际数据~
假设你的原始JSON数据长这样:
const originalJSON = [ { productId: "P001", productName: "无线耳机", category: "数码产品", price: 299, stock: 50 }, { productId: "P002", productName: "纯棉T恤", category: "服饰", price: 99, stock: 200 }, { productId: "P003", productName: "机械键盘", category: "数码产品", price: 499, stock: 30 } ];
而你想要的目标格式是按商品分类分组,只保留名称、价格和库存信息:
{ "数码产品": [ { "name": "无线耳机", "price": 299, "stock": 50 }, { "name": "机械键盘", "price": 499, "stock": 30 } ], "服饰": [ { "name": "纯棉T恤", "price": 99, "stock": 200 } ] }
那你可以用Array.reduce()来高效完成这个重构,代码如下:
// 重构JSON的核心逻辑 const transformedData = originalJSON.reduce((result, item) => { // 如果当前分类还没在结果对象里,先初始化一个空数组 if (!result[item.category]) { result[item.category] = []; } // 提取需要的字段,添加到对应分类的数组中 result[item.category].push({ name: item.productName, price: item.price, stock: item.stock }); return result; }, {}); console.log(transformedData);
核心思路拆解
reduce()是处理这类结构转换的利器,它能遍历原始数组,逐步构建我们想要的新对象- 每次遍历先判断目标分组键(这里是
category)是否存在于结果中,不存在就创建对应的数组容器 - 从原始数据里提取需要的字段,按目标格式组装后加入对应分组
如果你的原始JSON结构、目标格式和示例不同,只需要调整reduce里的逻辑就行:比如修改分组的依据键、调整提取的字段,要是遇到嵌套层级深的JSON,还可以结合解构或者递归遍历处理~
内容的提问来源于stack exchange,提问作者Tsanguu
相关产品推荐
相关产品推荐

