dcp
v0.3.1
Published
[![npm](https://img.shields.io/npm/v/dcp.svg)](https://www.npmjs.com/package/dcp)
Downloads
6,523
Readme
dcp
This module supports making copy / clone deeply and faster.
DEPRECATED
This package has been deprecated and will be removed from the registry in the near future. If you are using it, please fork it!
Benchmark
- Node.js: v12.7.0
- benchmark.js: v2.1.0
yarn benchmark
[1] "dcp" 0.0665μs[1.00][1.00]
[2] "JSON" 3.73μs[0.0178][56.1]
[3] "lodash" 3.76μs[0.0177][56.6]
Usage
Runtime parsing
If the reference of the base object is NOT changed, you can use it without defining a key.
const obj = {
a: 10,
c: [1, 2],
d: {}
};
// only first time, it will be parsed
const newObj = dcp.clone(obj);
/*
* { a: 10,
* b: '',
* c: [1, 2],
* d: { d1: false } }
*/
Runtime parsing with a key
If the reference is changed but the format is the same, you need to use it with a key.
// only first time, it will be parsed
const newObj = dcp.clone('key1', obj);
/*
* { a: 10,
* b: '',
* c: [1, 2],
* d: { d1: false } }
*/
// get the default values
const newObj2 = dcp.clone('key1');
/*
* { a: 0,
* b: '',
* c: [0, 0],
* d: { d1: false } }
*/
Pre-defined
It is the fastest way, but the difference is only the first clone.
const structure = {
a: 1,
b: 'default',
c: [undefined, undefined],
d: { d1: true }
};
const key = 'test';
dcp.define(key, structure);
const newObj = dcp.clone(key, obj);
APIs
define
arguments: (key: any, structure: any) arguments: (structure: any)
If it is called, functions which have the structure will be made.
clone
arguments: (key: any, structure: any) arguments: (structure: any)
The deep clone will be made by defined structure.
If the key isn't defined, define
will be called and then the deep clone function will be called.