normalize-obj

Rename keys, and change structure of an object

Usage no npm install needed!

<script type="module">
  import normalizeObj from 'https://cdn.skypack.dev/normalize-obj';
</script>

README

Build Status Coverage Status npm version

normalize-obj

Rename keys, and/or change structure of an object.

Install

npm install normalize-obj --save

How to use

var normalize = require('normalize-obj');

var object = {name: 'Darlan', age: 25, address: {num: '117'}};

var normalized = normalize(object).change('name', 'fullname');
// => {fullname: 'Darlan', age: 25, address: {num: '117'}};

Methods can be chained, example:

normalize(object)
    .change('name', 'fullname')
    .change('age', 'old');
// => {fullname: 'Darlan', old: 25, address: {num:  '117'}};

Accept nesting keys, with dot syntax, to change key name

normalize(object).change('address.num', 'address.number');
// => {name: 'Darlan', age: 25, address: {number: '117'}};

or change structure too

normalize(object).change('address.num', 'number');

// => {name: 'Darlan', age: 25, number: '117'};

Important

On change structure, like below, if old structure don't have others properties, there are deleted. I.e:

var object = {
    address: {
        street: 'Paulista',
        country: 'br',
        num: '1107'
    },
    phone: {
        mobile: '0000-0000'
    }
};

normalize(object).change('address.num', 'number');
/* => 
    {
        number: 1107,
        // keep address, because have others properties
        address: {
            street: 'Paulista',
            country: 'br'
        },
        phone: {
            mobile: '0000-0000'
        }
    };

*/

// now, if dont have properties
normalize(object).change('phone.mobile', 'mobile');

/* => 
    {
        number: 1107,
        address: {
            street: 'Paulista',
            country: 'br'
        },
        mobile: '0000-0000'
        // delete phone, because don't have others properties
    };

*/

And offer method to copy field

normalize(object).copy('address.num', 'number');
// => {name: 'Darlan', age: 25, address: {num: '117'}, number: '117'};

Tests

npm test