如何根据name字段复制数组内嵌套对象的指定字段
按GPU ID复制JSON数组中的sum值
需求说明
需要将JSON数据中gpu.id为"zebra"的sum值,复制到gpu.id为"fish"的sum字段中,且不依赖数组元素的顺序。
原始输入JSON
{ "zoo": [ { "room": { "name": "x" }, "gpu": { "id": "fish", "sum": 0 } }, { "room": { "name": "y" }, "gpu": { "id": "zebra", "sum": 797 } } ] }
实现代码(JavaScript)
const data = { "zoo": [ { "room": { "name": "x" }, "gpu": { "id": "fish", "sum": 0 } }, { "room": { "name": "y" }, "gpu": { "id": "zebra", "sum": 797 } } ] }; // 查找zebra的sum值 const zebraSum = data.zoo.find(item => item.gpu.id === "zebra")?.gpu.sum; // 找到fish并更新sum值 if (zebraSum !== undefined) { const fishEntry = data.zoo.find(item => item.gpu.id === "fish"); if (fishEntry) { fishEntry.gpu.sum = zebraSum; } } // 输出处理后的JSON console.log(JSON.stringify(data, null, 2));
处理后的输出JSON
{ "zoo": [ { "room": { "name": "x" }, "gpu": { "id": "fish", "sum": 797 } }, { "room": { "name": "y" }, "gpu": { "id": "zebra", "sum": 797 } } ] }
说明
- 使用
Array.find()方法通过gpu.id匹配目标元素,完全不依赖数组的顺序 - 加入了可选链(
?.)和存在性判断,避免因找不到目标元素导致报错
内容的提问来源于stack exchange,提问作者Udi
相关产品推荐
相关产品推荐

