Combinando objetos con Lodash

Es cierto que los siguientes métodos proveen más características para combinar objetos, pero hoy vamos a cubrir el típico ejemplo de combinar “settings”:

let source = {
    title: 'Awesome',
    description: 'Awe-inspiring',
    derived: {
        awesomely: 'In a manner inspiring awe', 
        awesomeness: 'The quality of being awesome',
        awesomest: 'Superlative form of awesome: most awesome'
    }
};

let customizer = {
    title: undefined,
    description: 'Arousing awe through being nice',
    derived: {
        awesomely: 'Inspire kindness', 
        awesomeness: null,
        awesomest: undefined
    },
    synonyms: ['overwhelming', 'impressive'],
    antonym: 'boring',
};

_.assign(source, customizer)

assign

_.assign()

nota: _.extend es un alias de _.assign, por lo tanto funcionan igual.

_.merge(source, customizer)

merge

_.merge()

_.defaults(source, customizer)

defaults

_.defaults()

_.defaultsDeep(source, customizer)

defaultsDeep

_.defaultsDeep()

¿Ya había dicho que amo lodash?

_.get()

if (awesome && awesome.plugins && awesome.plugins.notification) {
    // Usa awesome.plugins.notification
}

Se puede simplificar usando la función “_.get()” de lodash:

if (_.get(awesome, 'plugins.notification')) {
    // Usa awesome.plugins.notification
}

lodash

Array of Objects

var users = [
    {username: 'josoroma', id:1, age: 38}, 
    {username: 'celine', id:2, age: 25},
    {username: 'isa', id:3, age: 21},
    {username: 'wifi', id:4, age: 21},
    {username: 'coco', id:5, age: 21}
];

_.findWhere

Encontrar la primera ocurrencia:

var findWhereUsers = _.findWhere(
    users,
    { 
        age: 21 
    }
);
{
    age: 21,
    id: 3,
    username: "isa"
}

_.where

Encontrar todas las ocurrencias:

var whereUsers = _.where(
    users,
    { age: 21 }
);
[
    {
        age: 21,
        id: 3,
        username: "isa"
    },
    {
        age: 21,
        id: 4,
        username: "wifi"
    },
    {
        age: 21,
        id: 5,
        username: "coco"
    }
]