深拷贝 使用SON.parse(JSON.stringify)如何解决数组里层时间对象差值问题
时间: 2024-04-15 19:27:39 浏览: 85
使用JSON.parse(JSON.stringify())进行深拷贝时,对于数组中的时间对象差值问题,可以通过自定义解析函数来解决。
在执行深拷贝之前,先将时间对象转换为字符串,然后在解析时再将字符串转换回时间对象。这样可以保留时间对象的差值。
以下是一个示例代码:
```javascript
function clone(obj) {
return JSON.parse(JSON.stringify(obj, (key, value) => {
if (value instanceof Date) {
return value.toISOString(); // 将时间对象转换为字符串
}
return value;
}));
}
// 示例使用
const originalArray = [new Date('2022-01-01'), new Date('2022-02-01')];
const clonedArray = clone(originalArray);
console.log(originalArray[0]); // 输出:Sat Jan 01 2022 00:00:00 GMT+0000 (Coordinated Universal Time)
console.log(clonedArray[0]); // 输出:Sat Jan 01 2022 00:00:00 GMT+0000 (Coordinated Universal Time)
```
在自定义解析函数中,对于时间对象,将其转换为字符串形式(例如使用`toISOString()`方法),这样在解析后就能保留原始的时间差值。
阅读全文