deepcopy
Version:
deep copy data
153 lines (119 loc) • 4.38 kB
Markdown
[](https://github.com/sasaplus1/deepcopy.js/actions?query=workflow%3Atest)
[](http://badge.fury.io/js/deepcopy)
[](https://npm.runkit.com/deepcopy)
[](https://renovatebot.com)
deep copy data
```console
$ npm install deepcopy
```
```js
const deepcopy = require('deepcopy');
```
```typescript
import * as deepcopy from 'deepcopy';
```
```html
<script src="deepcopy.min.js"></script>
```
basic usage:
```js
const src = {
desserts: [
{ name: 'cake' },
{ name: 'ice cream' },
{ name: 'pudding' }
]
};
const dist = deepcopy(src);
src.desserts = null;
console.log(src); // { desserts: null }
console.log(dist); // { desserts: [ { name: 'cake' }, { name: 'ice cream' }, { name: 'pudding' } ] }
```
customize deepcopy:
```js
function MyClass(id) {
this._id = id;
}
const src = {
myClasses: [
new MyClass(1),
new MyClass(2),
new MyClass(3)
]
};
const dest = deepcopy(base, {
customizer(value) {
if (target.constructor === MyClass) {
return new MyClass(target._id);
}
}
});
src.myClasses = null;
console.log(src); // { myClasses: null }
console.log(dest); // { myClasses: [ MyClass { _id: 1 }, MyClass { _id: 2 }, MyClass { _id: 3 } ] }
```
- `value`
- `*`
- target value
- `options`
- `Object|Function`
- `Object` - pass options
- `Function` - use as customize function
- `return`
- `*` - copied value
|type |operation | |
|:-----------------|:-----------|:-------------------------|
|ArrayBuffer |deep copy | |
|Boolean |deep copy | |
|Buffer |deep copy |node.js only |
|DataView |deep copy | |
|Date |deep copy | |
|Number |deep copy | |
|RegExp |deep copy | |
|String |deep copy | |
|Float32Array |deep copy | |
|Float64Array |deep copy | |
|Int16Array |deep copy | |
|Int32Array |deep copy | |
|Int8Array |deep copy | |
|Uint16Array |deep copy | |
|Uint32Array |deep copy | |
|Uint8Array |deep copy | |
|Uint8ClampedArray |deep copy | |
|boolean |deep copy | |
|null |deep copy | |
|number |deep copy | |
|string |deep copy | |
|symbol |deep copy | |
|undefined |deep copy | |
|Arguments |deep copy |recursively, copy as Array|
|Array |deep copy |recursively |
|Map |deep copy |recursively |
|Object |deep copy |recursively |
|Set |deep copy |recursively |
|Array Iterator |shallow copy| |
|Map Iterator |shallow copy| |
|Promise |shallow copy| |
|Set Iterator |shallow copy| |
|String Iterator |shallow copy| |
|function |shallow copy| |
|global |shallow copy|window, global, self, etc.|
|WeakMap |shallow copy| |
|WeakSet |shallow copy| |
- [kjirou](https://github.com/kjirou)
- [Pr0methean](https://github.com/Pr0methean)
The MIT license.