sevenLee
11/6/2015 - 6:06 AM

Lodash : _.merge, _.assign

Lodash : _.merge, _.assign

// Defined within your component
var defaultSettings = {
    strictMode: true,
    formatting: {
        finalNewline: true,
        quotes: 'double'
    }
};

// Provided by the developer using your component
var userSettings = {
    formatting: {
        quotes: "single"
    }
};          
var mergedSettings = _.merge({}, defaultSettings, userSettings);

// {
//     strictMode: true,
//     formatting: {
//         finalNewline: true,
//         quotes: "single"
//     }
// }

//Instead of assigning values as a whole, 
//it recursively merges properties that don't hold the value undefined into the target object.

//Now, the formatting object hasn't been replaced by the partial user definition, 
//but has had its default values merged with the user settings.
var assignedSettings = _.assign({}, defaultSettings, userSettings);

// {
//     strictMode: true,
//     formatting: {
//         quotes: "single"
//     }
// }

// The true value of finalNewline, another property of the formatting object, is now lost.