set-safe

Safely set value at property, create intermediate properties if necessary

Usage no npm install needed!

<script type="module">
  import setSafe from 'https://cdn.skypack.dev/set-safe';
</script>

README

set-safe

Safely set value at property, create intermediate properties if necessary, without getting an Error if a parent is undefined.


You can even whether alter the original object or create an altered copy of it.


Install:

npm install set-safe --save

How to use


const set = require ('set-safe');
const toto = {
  foo: {
    bar: {
      baz: ['winter','is','coming'],
      fifo (arg1, arg2) {
        return 42;
      }
    },
    astring: "John Doe"
  }
};

// Tests
let i = 1;
console.log('The tested object is:', JSON.stringify(toto));

console.log(`\nExample ${i}:\n`,
  JSON.stringify(set('foo.bar.baz.2','there', toto))); // sets "coming" to "there"

console.log(`\nExample ${++i}:\n`,
  JSON.stringify(set('foo.astring','Leonardo Di Caprio', toto))); // sets "astring" property

console.log(`\nExample ${++i}:\n`,
    JSON.stringify(set(['opt1','sub1','subsub1','subsubsub1'].join('.'),'a value'))); // creates a new object with nested props

console.log(`\nExample ${++i}:\n`,
    JSON.stringify(set('foo.inexistant.property',42,toto))); // adds a new property

console.log(`\nExample ${++i}:\n`,
    JSON.stringify(set('foo.bar.baz.fifo',42,toto, true)), ' - ',JSON.stringify(toto)); // creates an altered copy of toto object

The browser version adds setSafe to the window object.