Nomenclature Predictably Misunderstood

    deepcopy
    TypeScript icon, indicating that this package has built-in type declarations

    2.1.0 • Public • Published

    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

    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

    143,561

    Version

    2.1.0

    License

    MIT

    Unpacked Size

    542 kB

    Total Files

    35

    Last publish

    Collaborators

    • sasaplus1