15270821319 4e5c5d37f9 初步设计数据库,注册登录 5 månader sedan
..
cjs 4e5c5d37f9 初步设计数据库,注册登录 5 månader sedan
src 4e5c5d37f9 初步设计数据库,注册登录 5 månader sedan
umd 4e5c5d37f9 初步设计数据库,注册登录 5 månader sedan
HISTORY.md 4e5c5d37f9 初步设计数据库,注册登录 5 månader sedan
LICENSE 4e5c5d37f9 初步设计数据库,注册登录 5 månader sedan
README.md 4e5c5d37f9 初步设计数据库,注册登录 5 månader sedan
index.d.ts 4e5c5d37f9 初步设计数据库,注册登录 5 månader sedan
index.js 4e5c5d37f9 初步设计数据库,注册登录 5 månader sedan
index.mjs 4e5c5d37f9 初步设计数据库,注册登录 5 månader sedan
package.json 4e5c5d37f9 初步设计数据库,注册登录 5 månader sedan

README.md

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.