如何基于现有键值重构JSON对象并动态设置mode字段值
实现方案
核心逻辑是在遍历键值对时,判断当前值的类型,对应设置不同的mode和istatus即可:
- 若值为数组(对应Demo-1的单层对象数组场景):mode设为
Veri,istatus设为open - 若值为纯对象(对应Demo-2的嵌套多数组场景):mode设为
Doubled,istatus设为Closed
完整实现代码如下:
const transformedObj = Object.fromEntries( Object.entries(obj).map(([key, value]) => { const isArrayType = Array.isArray(value) // 可选逻辑:如需和预期输出一致把Pepsi Cans替换为Pepsi,保留以下处理代码,不需要可直接删除 const processedValue = isArrayType ? value.map(item => item.sku === 'Pepsi Cans' ? {...item, sku: 'Pepsi'} : item) : value return [ key, { items: processedValue, mode: isArrayType ? 'Veri' : 'Doubled', istatus: isArrayType ? 'open' : 'Closed' } ] }) )
代码说明
- 用
Array.isArray做类型判断,完全匹配你给出的两类输入场景 - 保留了可选的sku替换逻辑,如果你不需要修改sku值,直接把
items赋值为原始value即可 - 字段完全对齐你预期的输出结果,替换了你原有代码里不符合输出要求的
status字段和mode取值
内容的提问来源于stack exchange,提问作者Sathishkumar
相关产品推荐
相关产品推荐

