Lodash .clone和.cloneDeep行为

GG。

我尝试使用嵌套对象克隆对象数组。

就像是:

var data = [
    { id: 1, values: { a: 'a', b: 'b' } },
    { id: 2, values: { c: 'c', d: 'd' } }
];

_。克隆

使用_.clone方法和isDeep参数位于true

var clone = _.clone(data, true);

data[1].values.d = 'x';

console.log( _.isEqual(data, clone) ); // true, clone[1].values.d == 'x'

我期望clone[1].values.d == 'd'

如果isDeep为true,则还将克隆嵌套对象,否则将通过引用分配它们。

怎么了?

_.CloneDeep

另外,当我尝试使用该_.cloneDeep方法时,我得到一个错误:

var clone = _.cloneDeep(data);

// Uncaught TypeError: Object function u(n){return n instanceof u?n:new o(n)}
// has no method 'cloneDeep'

为什么会出现此错误?

$。扩展

使用$.extend克隆没有按预期引用原始对象:

var clone = $.extend(true, {}, data);

console.log( _.isEqual(data, clone) ); // false, clone[1].values.d == 'd' 
GG。

感谢Gruff Bunny和Louis的评论,我找到了问题的根源。

当我也使用Backbone.js时,我加载了与Backbone和Underscore兼容的Lodash特殊版本,该版本禁用了某些功能。在此示例中:

var clone = _.clone(data, true);

data[1].values.d = 'x';

我只是在Backbone应用程序中将Underscore构建替换为Normal构建,并且该应用程序仍在工作。因此,我现在可以将Lodash .clone与预期的行为一起使用。

编辑2018: Underscore构建似乎不再存在如果您在2018年阅读此书,则可能对本文档(Backbone和Lodash)感兴趣

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

不能从 lodash 要求 cloneDeep

来自分类Dev

$ .clone()和$ .data()奇怪的行为

来自分类Dev

$ .clone()和$ .data()奇怪的行为

来自分类Dev

Curry Lodash函数,行为异常

来自分类Dev

为什么lodash的.isObject和.isPlainObject的行为与“ typeof x ==='object'”不同?

来自分类Dev

JSLint和lodash

来自分类Dev

jQuery 1.10 live()和clone()的组合-奇怪的行为

来自分类Dev

使用 .clone() 和 forEach() 后项目行为异常

来自分类Dev

Lodash差异行为不如预期

来自分类Dev

Lodash差异行为不如预期

来自分类Dev

Lodash流和多个参数

来自分类Dev

用Lodash分组和计数

来自分类Dev

使用 es6 导入时 lodash pick 的行为不同

来自分类Dev

使用Underscore / Lodash分组和求和

来自分类Dev

用lodash链接pluck()和flatten()

来自分类Dev

带有lodash的filterfirst和filterlast函数

来自分类Dev

Lodash滤波器和功能组成

来自分类Dev

Lodash的forOwn和forOwnRight迭代顺序

来自分类Dev

使用optgroups和lodash动态创建的选项

来自分类Dev

LoDash和ParseDB的JSON CRUD操作

来自分类Dev

如何从lodash导入和使用_.sortBy

来自分类Dev

LoDash和AngularJS实时同步更新

来自分类Dev

LoDash和ParseDB的JSON CRUD操作

来自分类Dev

带有lodash的filterfirst和filterlast函数

来自分类Dev

过滤器中的 Lodash 和 OR 逻辑

来自分类Dev

& 符号视图和 lodash.debounce

来自分类Dev

lodash 如何对元素进行分组和计数

来自分类Dev

ES6等同于lodash _.clone(lodash无法克隆ES6代理)

来自分类Dev

Angular2 : 只导入 lodash.clone (cherry-pick)