本文详解在数组中根据唯一属性(如 id)精准替换单个对象的多种方法,重点对比 map()、Map 和 find() 的性能与适用场景,并提供可直接运行的代码示例。
本文详解在数组中根据唯一属性(如 `id`)精准替换单个对象的多种方法,重点对比 `map()`、`map` 和 `find()` 的性能与适用场景,并提供可直接运行的代码示例。
在 JavaScript 开发中,经常需要根据某个唯一标识(例如 id)将数组中的旧对象替换为新对象,同时保持原数组结构不变。最直观且适用于单次替换、代码简洁、语义清晰的方法是使用 Array.prototype.map():
const oldEmployees = [ { id: 1, name: 'Jon', age: 38 }, { id: 2, name: 'Mike', age: 35 }, { id: 3, name: 'Shawn', age: 40 }];const newEmployee = { id: 2, name: 'Raj', age: 32 };const updatedEmployees = oldEmployees.map( employee => employee.id === newEmployee.id ? newEmployee : employee);console.log(updatedEmployees);// [// { id: 1, name: 'Jon', age: 38 },// { id: 2, name: 'Raj', age: 32 },// { id: 3, name: 'Shawn', age: 40 }// ]
✅ 优势:
⚠️ 注意事项:
// 批量替换推荐方案:先建 Map,再 map 查找const newEmployees = [ { id: 2, name: 'Raj', age: 32 }, { id: 3, name: 'Alex', age: 41 }];const updateMap = new Map(newEmployees.map(e => [e.id, e]));const batchUpdated = oldEmployees.map(emp => updateMap.has(emp.id) ? updateMap.get(emp.id) : emp);
? 性能实测结论(基于 50,000 次循环基准测试):
立即学习“Java免费学习笔记(深入)”;
? 总结建议: