Есть ли более простой метод lodash для поиска параметров массива? - PullRequest
0 голосов
/ 12 сентября 2018

Я только ищу решение на основе lodash. Я не могу использовать функции javascript 6.

Код ниже работает. Он находит «запись», которая содержит запрошенную строку в массиве circleStoreId. Я чувствую, что должен быть более простой, более отвратительный способ добиться этого. Мне не хватает лучшего решения?

var RECORDS = [
    {
        circleStoreId: [
            'AKWX3MWZ0FFT6',    //  WS Herb Counter
            'C9VKT4W6GQNBM',    //  WS Bar
            'KPN3W7SHAH1P6'     //  WS Front Counter
            ],
        acmeLocationIId: 3,
        channelIId: 2
    },
    {
        circleStoreId: [
            '0ZK8FZHPD5G71',    //  SK Herb Counter
            '6VCZ7NNAF2VWW'     //  SK Bar
            ],
        acmeLocationIId: 4,
        channelIId: 1
    }
    //  Ready for the next retail location to be added...
];

var f = _.find(RECORDS, function(r) {
    return _.indexOf(r.circleStoreId, '6VCZ7NNAF2VWW') > -1;
});

console.log(f)

Консоль выведет

{circleStoreId: Array (2), acmeLocationIId: 4, channelIId: 1}

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

Возможно использование includes вместо indexOf. Но это не так сильно улучшается.

var f = _.find(RECORDS, function(r) {
    return _.includes(r.circleStoreId, '6VCZ7NNAF2VWW'));
});

console.log(f)
0 голосов
/ 12 сентября 2018

Использование ES6 Array.prototype.find () :

var RECORDS = [
    {
        circleStoreId: [
            'AKWX3MWZ0FFT6',    //  WS Herb Counter
            'C9VKT4W6GQNBM',    //  WS Bar
            'KPN3W7SHAH1P6'     //  WS Front Counter
            ],
        acmeLocationIId: 3,
        channelIId: 2
    },
    {
        circleStoreId: [
            '0ZK8FZHPD5G71',    //  SK Herb Counter
            '6VCZ7NNAF2VWW'     //  SK Bar
            ],
        acmeLocationIId: 4,
        channelIId: 1
    }
    //  Ready for the next retail location to be added...
];

var f = RECORDS.find( r => r.circleStoreId.includes('6VCZ7NNAF2VWW'))

console.log(f)
...