在 JavaScript 中克隆对象数组
数组的结构
克隆对象数组时,考虑数组中对象的结构及其关系至关重要。如果对象引用数组中的其他对象,则浅拷贝只会复制引用,而不是创建新对象。
可用解决方案
有多种方法可以在 JavaScript 中克隆对象数组,具体取决于具体要求:
1. StructuredClone (ES2021)
structuralClone 方法是克隆复杂对象的最现代、最有效的方法。它创建一个深层副本,保留原始数组中的结构和关系。
const clonedArray = structuredClone(originalArray);
2. JSON.parse
如果对象可序列化为 JSON,您可以使用 JSON.stringify 将它们转换为字符串,然后使用 JSON.parse 将它们解析回对象。此方法不适用于不可序列化的对象。
const clonedArray = JSON.parse(JSON.stringify(originalArray));
3.扩展运算符和 Array.map
对于浅对象克隆,您可以在 Array.map 中使用扩展运算符 ...。此方法会重新创建对象,但不会创建新的引用。它效率很高,仅适用于浅层物体。
const clonedArray = originalArray.map(obj => ({ ...obj }));
4. jQuery 的深复制
虽然 jQuery 的扩展方法可以用于浅复制,但深复制需要扩展(true,{},originalArray)。但是,这种方法可能会遇到递归问题。
性能注意事项
克隆方法的性能因对象的复杂性和结构而异。 StructuredClone 和 Spread 运算符通常更有效。所提供的附录中示例数组的基准测试结果表明,扩展运算符比 JSON.stringify 快得多,使其成为浅层对象克隆的理想选择。
结论
克隆方法的选择取决于应用的具体要求。对于复杂对象结构的深度克隆,推荐使用 StructuredClone。对于可序列化对象的浅克隆,可以使用 JSON.stringify 或扩展运算符方法。
以上是如何在 JavaScript 中有效克隆对象数组?的详细内容。更多信息请关注PHP中文网其他相关文章!