I am looking to set inner properties of an object only if they already exist. Lodash _.set
will create the whole hierarchy if it does not exist.
Is there an easy way to do this ? (Without and if statement ?)
Snippet below:
const obj = {a: {b: 1}}; _.set(obj, 'a.b', 2); console.log(obj); // Great ! _.set(obj, 'a.c', 1); console.log(obj); // Great but not what I want. I would like c not to be set because it does not exist in the first place
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
Advertisement
Answer
The answer from Kalaiselvan A below put me on the way but this is not quite what I was looking for.
Using the same idea but improving the ternary gives me the following solution which I am happy with.
const obj = {a: {b: 1}}; _.has(obj, 'a.b') && _.set(obj, 'a.b', 2); console.log(obj); _.has(obj, 'a.c') && _.set(obj, 'a.c', 2); console.log(obj);
<script src="https://cdn.jsdelivr.net/lodash/4/lodash.min.js"></script>