#!/usr/bin/env node
var _ = require('underscore');
var a = [{f: 1}, {f:5}, {f:10}];
var b = _.clone(a);
b[1].f = 55;
console.log(JSON.stringify(a));
这导致:
[{"f":1},{"f":55},{"f":10}]
克隆似乎不起作用! 所以我 RTFM,看到这个:
http://underscorejs.org/#clone
Create a shallow-copied clone of the object. Any nested objects or arrays will be copied by reference, not duplicated.
所以 _.clone
没什么用。有没有办法实际复制对象数组?
最佳答案
嗯,有窍门!如果 clone 不“克隆”嵌套对象,您可以通过在 map 调用中显式克隆每个对象来强制它!像这样:
#!/usr/bin/env node
var _ = require('underscore');
var a = [{f: 1}, {f:5}, {f:10}];
var b = _.map(a, _.clone); // <----
b[1].f = 55;
console.log(JSON.stringify(a));
打印:
[{"f":1},{"f":5},{"f":10}]
耶! a
不变!我现在可以根据自己的喜好编辑 b
!
关于javascript - 如何使用下划线克隆对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21003059/