2016-08-03 4 views
0

Я использую React Reselec t, и я пытаюсь отфильтровать выбранные клиенты, чтобы я возвращал только клиенты. Все, у которых есть идентификаторы из selectedClientsIds.Фильтрация 2 массивов с React Reselect

selected_clients.js

import _ from 'lodash'; 
import { createSelector } from 'reselect'; 

const clientSelector = state => state.clients.all 
const selectedClientSelector = state => state.selectedClientIds 

const getClients = (all, selectedClientIds) => { 
    const selectedClients = _.filter(
     all, 
     client => _.contains(selectedClientIds, all.id) 
    ); 

    return selectedClients; 
}; 

export default createSelector(
    clientSelector, 
    selectedClientSelector, 
    getClients 
); 

Магазин clients.all выглядит следующим образом:

[ 
    { 
     "id": 1, 
     "name": “Bob”, 
    }, 
    { 
     "id": 2, 
     "name": “Mary ”, 
    } 
] 

Магазин selectedClientIds выглядит следующим образом:

[1] 

Как бы совместить и с только показать список клиентов, имеющих идентификаторы от selectedClientId? С помощью фильтра я выше, я получаю пустой массив

[] 

ответ

2

Вам необходимо пройти client.id не all.id

const getClients = (all, selectedClientIds) => { 
    const selectedClients = _.filter(
     all, 
     client => _.contains(selectedClientIds, client.id) 
    ); 

    return selectedClients; 
}; 

 Смежные вопросы

  • Нет связанных вопросов^_^