JavaScript如何从嵌套JSON对象中提取指定字段拼接生成目标数组
问题排查
你的代码存在两处核心问题:
- 拼接顺序不符合要求:现有代码拼接顺序为
name:sup对象:externalId,要求的格式为externalId:id:name - 取值错误:
item.product.sup[0]是对象类型,你需要显式取它的id属性;你给出的JSON示例中name字段带有多余的**标记和空格,需要做清洗才能匹配预期输出
修复后的实现
基于forEach的修改版
const jsonResultKeys = ['AAA', 'BBB', 'CCC'] const items = []; jsonResultKeys.forEach(k => { const item = Jsonresult.items[k]; const supFirstItem = item.product.sup[0]; // 若实际JSON中name没有**和空格,可直接用item.product.name const cleanName = item.product.name.replace(/\*\*/g, '').replaceAll(' ', ''); items.push({ description: `${supFirstItem.prod.externalId}:${supFirstItem.id}:${cleanName}` }) });
基于map的简洁实现(符合你想要的map写法需求)
const jsonResultKeys = ['AAA', 'BBB', 'CCC'] const items = jsonResultKeys.map(k => { const { product } = Jsonresult.items[k]; const supFirstItem = product.sup[0]; const cleanName = product.name.replace(/\*\*/g, '').replaceAll(' ', ''); return { description: `${supFirstItem.prod.externalId}:${supFirstItem.id}:${cleanName}` } })
以上两种实现运行后都能得到你给出的预期输出结果。
内容的提问来源于stack exchange,提问作者Avalanche
相关产品推荐
相关产品推荐

