Я пытаюсь отфильтровать некоторые данные с помощью lodash.
То, что у меня есть, только фильтрует данные по свойству name
.И он возвращает результат только при вводе всей фразы.Например, если есть ключ name
со значением Marcos Alonso
, и вы только набираете Marcos
в поле поиска, он ничего не возвращает.И это тоже то, что я хочу реализовать.Чтобы вернуть любое значение, совпадающее с тем, что находится в окне поиска.
Массив данных называется passengersData
и выглядит так (passengersData
поступает из хранилища Redux):
[
{
"id": 3,
"name": "Marcos Alonso",
"address": "Sabana",
"phone": "712321222",
"pickup": 0,
"cardinalpoint": "N",
"latitude": "9.93683450",
"longitude": "-84.10991830",
"timestamp": "2019-02-19 21:23:46",
"dropofftimestamp": null,
"pickuptimestamp": null,
"deleted": null,
"driver": 1
},
...
]
Это компонент:
// imports
const PassengerCardBasedOnRoute = ({
navigationStore,
passengersData,
popupsModalsActionHandler,
searchParam,
}) => {
const filterByDropOffTimestamp = data =>
filter(data, ['dropofftimestamp', null]);
const componentToRenderBasedOnParams = info => (
<PassengersInfo
key={info.id}
id={info.id}
cardinalpoint={info.cardinalpoint}
name={info.name}
address={info.address}
datetime={info.timestamp}
searchParam={searchParam}
callModal={popupsModalsActionHandler}
/>
);
return (
<>
<View>
{passengersData && !searchParam.length &&
filter(filterByDropOffTimestamp(passengersData), [
'name',
searchParam,
]).map(info => componentToRenderBasedOnParams(info))
}
</View>
</>
);
};
export default compose(
connect(
store => ({
passengersData: store.homeScreen.passengersData,
searchParam: store.homeScreen.searchParam,
}),
),
)(PassengerCardBasedOnRoute);
Так что я могу сделать, чтобы в этом случае правильно отфильтровать данные?