Ready to take your JavaScript development to the next level? Meet npm Enterprise - the ultimate in enterprise JavaScript. Learn more »

deepcopy

2.0.0 • Public • Published

deepcopy.js

Build Status npm version Try deepcopy on RunKit renovate

deep copy data

Installation

npm

$ npm install deepcopy

Usage

node.js

const deepcopy = require('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

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

Contributors

License

The MIT license.

Keywords

none

install

npm i deepcopy

Downloadsweekly downloads

69,529

version

2.0.0

license

MIT

homepage

github.com

repository

Gitgithub

last publish

collaborators

  • avatar
Report a vulnerability