2.1.0 • Published 4 years ago

deepcopy v2.1.0

Weekly downloads
124,941
License
MIT
Repository
github
Last release
4 years ago

deepcopy.js

test npm version Try deepcopy on RunKit renovate

deep copy data

Installation

npm

$ npm install deepcopy

Usage

node.js

JavaScript

const deepcopy = require('deepcopy');

TypeScript

import * as deepcopy from 'deepcopy';

browser

<script src="deepcopy.min.js"></script>

Example

basic usage:

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:

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 } ] }

Functions

deepcopy(value, options)

  • value
    • *
      • target value
  • options
    • Object|Function
      • Object - pass options
      • Function - use as customize function
  • return
    • * - copied value

Supported types and copy operation

typeoperation
ArrayBufferdeep copy
Booleandeep copy
Bufferdeep copynode.js only
DataViewdeep copy
Datedeep copy
Numberdeep copy
RegExpdeep copy
Stringdeep copy
Float32Arraydeep copy
Float64Arraydeep copy
Int16Arraydeep copy
Int32Arraydeep copy
Int8Arraydeep copy
Uint16Arraydeep copy
Uint32Arraydeep copy
Uint8Arraydeep copy
Uint8ClampedArraydeep copy
booleandeep copy
nulldeep copy
numberdeep copy
stringdeep copy
symboldeep copy
undefineddeep copy
Argumentsdeep copyrecursively, copy as Array
Arraydeep copyrecursively
Mapdeep copyrecursively
Objectdeep copyrecursively
Setdeep copyrecursively
Array Iteratorshallow copy
Map Iteratorshallow copy
Promiseshallow copy
Set Iteratorshallow copy
String Iteratorshallow copy
functionshallow copy
globalshallow copywindow, global, self, etc.
WeakMapshallow copy
WeakSetshallow copy

Contributors

License

The MIT license.

@invoice-simple/parse-server@youngjs/youngjs@neluzhin/specificatorsimpomaticflyby@brightcove/studio-timeseries-chart@staymate/topicsvue-api-routegenhpdbreact-split-navigation@leapllc/parse-server@elijahjpassmore/qwc2nodereactorhiklife-client-common-mosca@infinitebrahmanuniverse/nolb-dee@zenstackhq/internalparse-server@everything-registry/sub-chunk-1460parse-server-cloud-logging-mod-7alpha.1xedi-parse-serverxald-parse-serverxb-tracking-sdkxvi-helperwatson-resizewets-tsx-loaderwebextension-manifest-loaderweblogjsvuex-jsonschema-validationthe-amazing-quran-translationsthgy-componentstingle-dd-map-fieldtidal.jstipofftelestotransactiontransactionblockchainttag-webpack-plugintranslation_tool-lxwang2tree-list-tooltwitterfollowerexplorertypeorm-gql-builderzero.libvalidate-optionuw-proskommavs-build-vuevocovo-moscavocovo-patched-moscavisible-reactvbcs-cloud-serverultrabit-parse-serverswagger-translation-tooltei-util@intenseloop/parse-server@imtf/react-jsonschema-form-conditionals@imtf/rjsf-conditionals@hackr/multi-babelsam-parse-serverschema-settingsscrewdriver-modelsshapeable-starter-websign-addonshp2stlsimp-o-maticsimple-odmsimpleormsirrobert-test-vowsskopskzz-toolsodosnipersmi.cachesmi.clismart-design-assiantsql-mvcspecificatorsszsubstitutionsuper-parse-serverstorm-orm-testsupply-chain-utils@lassi-js/kili@m1r4ge/parse-server@lpi/react-jsonschema-form-conditionals@oppenheimer/parse-serverwudi-parse-serverzee-server@hustle/parse-server@leisurelink/claims@netcom/consilium-dei@nessi/parse-server@nerd305/vuetify-date-range-picker@rnovec/scrapyd-api@northpool/img2ktx@oarepo/invenio-vue@ocell/parse-server@mykg/plotter@peacefultruth/butterfly@navarik/storage@naturalatlas/paranoid-request@pathicles/config
2.1.0

4 years ago

2.0.0

5 years ago

1.0.1

5 years ago

1.0.0

6 years ago

0.6.3

8 years ago

0.6.2

8 years ago

0.6.1

8 years ago

0.6.0

8 years ago

0.5.0

9 years ago

0.4.0

9 years ago

0.3.3

10 years ago

0.3.2

11 years ago

0.3.1

11 years ago

0.3.0

11 years ago

0.2.0

11 years ago

0.1.2

11 years ago

0.1.1

11 years ago

0.1.0

11 years ago