需求:为JSON对比脚本新增unit字段匹配写入功能
修改后的Node.js脚本实现匹配过滤与字段同步
原脚本仅完成了products.json中与good.json name不匹配对象的过滤,以下是新增同步unit字段功能后的完整代码:
const fs = require('fs'); // 读取两个JSON文件 const goods = JSON.parse(fs.readFileSync('good.json', 'utf-8')); const products = JSON.parse(fs.readFileSync('products.json', 'utf-8')); // 将goods转换为name:unit的映射对象,提升匹配效率 const goodsUnitMap = goods.reduce((map, item) => { map[item.name] = item.unit; return map; }, {}); // 过滤products并同步unit字段 const processedProducts = products .filter(product => goodsUnitMap.hasOwnProperty(product.name)) .map(product => ({ ...product, unit: goodsUnitMap[product.name] })); // 将处理后的结果写回products.json(带格式化) fs.writeFileSync('products.json', JSON.stringify(processedProducts, null, 4), 'utf-8');
关键修改说明
- 映射优化:用
reduce把goods数组转成键值对映射,避免每次匹配都遍历数组,提升处理效率 - 字段同步:在过滤后通过
map方法,给每个匹配的产品对象添加/覆盖unit字段,值来自good.json中对应name的对象 - 逻辑兼容:保留了原脚本的过滤逻辑,仅保留name匹配的产品
内容的提问来源于stack exchange,提问作者Vladyk
相关产品推荐
相关产品推荐

