copy-props
![Build Status](https://ci.appveyor.com/api/projects/status/github/sttk/copy-props?branch=master&svg=true)
Copy properties deeply between two objects.
![NPM](https://nodei.co/npm/copy-props.png)
Install
$ npm i copy-props
Usage
-
Load this module :
const copyProps = require('copy-props');
-
Copy src to dst simply (and return dst) :
var src = { a: 1, b: { b1: 'bbb' }, c: 'ccc' };
var dst = { a: 2, b: { b1: 'xxx', b2: 'yyy' } };
copyProps(src, dst);
-
Copy src to dst with property mapping (and return dst) :
var src = { a: 1, b: { b1: 'bbb' }, c: 'ccc', d: 'ddd' };
var dst = { f: { a: 2, b1: 'xxx', b2: 'yyy' }, e: 'zzz' };
copyProps(src, dst, {
a: 'f.a',
'b.b1': 'f.b.b1',
'b.b2': 'f.b.b2',
'c': 'f.c',
});
-
Copy src to dst with convert function (and return dst) :
var src = { a: 1, b: { b1: 'bbb' } };
var dst = { a: 0 };
copyProps(src, dst, function(value, keyChain) {
if (keyChain === 'a') {
return value * 2;
}
if (keyChain === 'b.b1') {
return value.toUpperCase();
}
});
API
copyProps(src, dst [, fromToProps] [, converter]) => object
Copy properties of src to dst deeply.
If map is given, it is able to copy between different properties.
If converter is given, it is able to convert the terminal values.
Format of fromToProps
fromToProps is a non-nested key-value object. And the keys are property key chains of src and the values are property key chains of dst.
The key chain is a string which is concatenated property keys on each level with dots, like 'aaa.bbb.ccc'
.
The following example copys the value of src.aaa.bbb.ccc
to dst.xxx.yyy
.
copyProps(src, dst, {
'aaa.bbb.ccc' : 'xxx.yyy'
})
API of converter
converter(value, keyChain) => any
converter is a function to convert terminal values of propeerties of src.
License
MIT