_.cloneDeep(value)
_.cloneDeep(value) 创建一个深拷贝(deep clone)的 value,该值及其内部的所有引用类型数据结构都被递归地拷贝,生成一个新的对象,原对象和新对象之间没有任何引用关系。
value:要进行深拷贝的值。
示例:
const obj = { a: 1, b: { c: 2 } };
const arr = [1, [2, { d: 3 }]];
const clonedObj = _.cloneDeep(obj);
const clonedArr = _.cloneDeep(arr);
// 修改拷贝后的对象
clonedObj.a = 100;
clonedObj.b.c = 200;
// 输出修改后的拷贝后的对象和原始对象
console.log(clonedObj); // 输出:{ a: 100, b: { c: 200 } }
console.log(obj); // 输出:{ a: 1, b: { c: 2 } }
// 修改拷贝后的数组
clonedArr[0] = 100;
clonedArr[1][1].d = 300;
// 输出修改后的拷贝后的数组和原始数组
console.log(clonedArr); // 输出:[100, [2, { d: 300 }]]
console.log(arr); // 输出:[1, [2, { d: 3 }]]
在这个例子中,_.cloneDeep 创建了对象 obj 和数组 arr 的深拷贝 clonedObj 和 clonedArr。修改拷贝后的对象或数组不会影响原始对象或数组,也不会影响拷贝后的对象或数组内部的引用类型数据结构。
相关内容
- 介绍 Lodash:简化 JavaScript 编程,提供高效的集合操作和函数式编程支持。
- \_.chunk(array, [size=1]) _.chunk(array, [size=1]) 创建一个元素数组,将其分为长度为 size 的组。 如果数组不能均匀分割,则最终的块将是剩余的元素。
- \_.compact(array) _.compact(array) 创建一个删除所有错误值的数组。 值 false、null、0、""、undefined 和 NaN 均为 false。
- \_.concat(array, [values]) _.concat(array, [values]) 创建一个新数组,将数组与任何其他数组和/或值连接起来。
- \_.difference(array, [values]) _.difference(array, [values]) 使用 SameValueZero 进行等价比较,创建一个数组,其中的数组值不包含在其他给定数组中。结...
- \_.differenceBy(array, [values], [iteratee=_.identity]) .differenceBy(array, [values], [iteratee=.identity]) 该方法与 _.difference 类似,但它接受 i...