Lodash _.get enhanced with * wildcard

A Lodash mixin which can return an array of strings out of nested object arrays

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>

JavaScript

let object = {
    suppliers: [{
            id: 1,
            name: 'foo',
            phone: {
                id: 1,
                prefix: '+49',
                number: '123456789',
            },
            addresses: [{
                    id: 1,
                    name: 'lorem',
                    street: {
                        name: 'fakerstreet',
                        nr: 23,
                    }
                },
                {
                    id: 2,
                    name: 'ipsum',
                }
            ]
        },
        {
            id: 2,
            name: 'bar',
            addresses: [{
                    id: 1,
                    name: 'test',
                },
                {
                    id: 2,
                    name: '123',
                    street: {
                        name: 'lorem-ipsum street',
                        nr: 42,
                    }
                }
            ]
        },
    ],
}

let collection = [];

_.mixin({
    'enhancedGet': function(object, path, defaultValue) {
        let result, parts = path.split('*');

        if (parts.length <= 1) {
            result = _.get(object, path, defaultValue);
        } else {
            path = _.trim(parts.shift(), '.');
            let remainingPath = _.trim(parts.join('*'), '.');

            let data = object
            if (path) data = _.get(object, path)

            if (data && data.length) {
                data.forEach(item => {
                    const nextLevelResult = _.enhancedGet(item, remainingPath, defaultValue);
                    if (parts.length == 1 && ! _.isEmpty(nextLevelResult)) collection.push(nextLevelResult);
                })
            }

            result = collection;
        }

        return result;
    }
});

const result = _.enhancedGet(object, 'suppliers.*.addresses.*.street.name')
console.log(result)