当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Lodash _.cloneDeep()用法及代码示例


_.cloneDeep()方法用于创建值的深层副本,即,它以递归方式克隆该值。此方法类似于_.clone()方法。

用法:

_.cloneDeep( value )

参数:此方法接受上述和以下描述的单个参数:

  • value:此参数保存需要递归克隆的值。

返回值:此方法返回深度克隆的值。

范例1:克隆简单对象



const _ = require('lodash'); 
  
var obj = { 
    x:23 
}; 
  
// Deep copy 
var deepCopy = _.cloneDeep(obj); 
  
console.log('Comparing origianal with'
    + ' deep ', obj === deepCopy); 
  
obj.x = 10; // Changing original value 
  
console.log('After changing original value'); 
  
console.log("Original value ", obj); 
  
console.log("Deep Copy value ", deepCopy);

输出:

Comparing origianal with deep  false
After changing original value
Original value  { x:10 }
Deep Copy value  { x:23 }

范例2:克隆复杂对象

const _ = require('lodash'); 
   
var obj = [{  x:1 }, {y:2}]; 
  
// Deep copy 
var deepCopy = _.cloneDeep(obj); 
   
console.log('Comparing origianal with deep ', 
            obj[0] === deepCopy[0]); 
   
// Changing orignal value 
obj[0].x = 10; 
   
// Values after changing original value 
console.log("After changing original value"); 
   
console.log("Original value ", obj); 
   
console.log("Deep Copy value ", deepCopy);

输出:

Comparing origianal with deep  false
After changing original value
Original value  [ { x:10 }, { y:2 } ]
Deep Copy value  [ { x:1 }, { y:2 } ]

因此,在这里我们看到,更改原始值后,值的深层副本没有改变,因为_.cloneDeep()递归地深深复制了该值。

注意:在正常的JavaScript中这将无法正常工作,因为它需要安装库lodash。

参考: https://lodash.com/docs/4.17.15#cloneDeep




相关用法


注:本文由纯净天空筛选整理自Dharmendra_Kumar大神的英文原创作品 Lodash | _.cloneDeep() Method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。