Lodash 克隆数组与传播运算符
Lodash Clone Array vs Spread Operator
我想知道是否有人知道传播运算符
cosnt newArray = [...oldArray];
制作 lodash 方法
const newArray = _.clone(oldArray);
过时了?
或者更重要的是哪种方法更有效?
*注意这是一个浅克隆,只需要新数组中的对象引用。
谢谢!
_.clone
可以用在很多事情上 除了数组之外:
This method is loosely based on the structured clone algorithm and supports cloning arrays, array buffers, booleans, date objects, maps, numbers, Object objects, regexes, sets, strings, symbols, and typed arrays. The own enumerable properties of arguments objects are cloned as plain objects. An empty object is returned for uncloneable values such as error objects, functions, DOM nodes, and WeakMaps.
相比之下,数组上下文中的扩展语法仅适用于 可迭代 对象(例如数组,以及具有 Symbol.iterator
属性),并且只会生成普通数组。许多东西可以用 _.clone
调用来浅克隆它们,而数组扩展无法做到这一点 - 例如普通对象。
(有object spread这种东西可以浅拷贝object,但是语法pretty new)
另一件需要考虑的事情是浏览器兼容性——扩展语法需要 ES6 支持,而库方法的调用 _.clone
不需要。
看起来 clone
比传播运算符更快:https://www.measurethat.net/Benchmarks/ShowResult/81691 .
但是,作为 javascript in an expensive resource to process,添加一个库来完成 vanilla js 可以完美完成的事情可能不是一个好主意。
我想知道是否有人知道传播运算符
cosnt newArray = [...oldArray];
制作 lodash 方法
const newArray = _.clone(oldArray);
过时了?
或者更重要的是哪种方法更有效?
*注意这是一个浅克隆,只需要新数组中的对象引用。
谢谢!
_.clone
可以用在很多事情上 除了数组之外:
This method is loosely based on the structured clone algorithm and supports cloning arrays, array buffers, booleans, date objects, maps, numbers, Object objects, regexes, sets, strings, symbols, and typed arrays. The own enumerable properties of arguments objects are cloned as plain objects. An empty object is returned for uncloneable values such as error objects, functions, DOM nodes, and WeakMaps.
相比之下,数组上下文中的扩展语法仅适用于 可迭代 对象(例如数组,以及具有 Symbol.iterator
属性),并且只会生成普通数组。许多东西可以用 _.clone
调用来浅克隆它们,而数组扩展无法做到这一点 - 例如普通对象。
(有object spread这种东西可以浅拷贝object,但是语法pretty new)
另一件需要考虑的事情是浏览器兼容性——扩展语法需要 ES6 支持,而库方法的调用 _.clone
不需要。
看起来 clone
比传播运算符更快:https://www.measurethat.net/Benchmarks/ShowResult/81691 .
但是,作为 javascript in an expensive resource to process,添加一个库来完成 vanilla js 可以完美完成的事情可能不是一个好主意。