Мне нужна помощь в фильтрации массива различных значений. Я использую React.Заранее спасибо !!!
У меня есть полезная нагрузка, которая содержит 3 различных типа массивов, каждый тип массива имеет следующие значения ключа.
myPayload: array (3)
0: {name: “John “ , age: “24” , height: “174cm” , **type:
“student”**}.
1: {name: “Jane” , age: “49” , height: “168cm” ,**type: “teacher”**}
2: { name: “schoolName” , country: “UnitedStated” , state: “IL”,
**type:”building”**}
Карты типа "ученик" и "учитель" содержат те же поля, но карточка "здания" имеет поля, отличные от других.
Я отображаю массивы в виде карт, и моя цель заключается в возможности поиска по всем значениям массивов / карт.
Это то, что у меня есть в моем cards.reducer
import { FILTER_CARDS, FETCH_CARDS } from '../X/Y';
const initialState = { myPayload: [], filteredPayload: [] };
export default function (state = initialState, action) {
const { type, myPayload = [], value } = action;
const handler = {
[FETCH_CARDS]: {
...state,
myPayload,
},
[FILTER_CARDS]: {
...state,
filteredPayload: state.myPayload.filter(({ name }) => name.toLowerCase().match(value)),
},
};
return handler[type] || state;
}
Вышеуказанное фильтрует только через поле «имя» каждой карты.
Я попытался отфильтровать все значения (имя, возраст, рост, тип, schoolName, страна, штат), внеся изменения в «FILTER_CARDS», но это приводит к ошибке
"невозможно прочитать свойство 'toLowerCase' из неопределенного"
[FILTER_CARDS]: {
...state,
filteredPayload: (state.myPayload.type == ('student' || 'teacher')
? (state.myPayload.filter(({ name }) => name.toLowerCase().match(value)),
state.myPayload.filter(({ age }) => age.toLowerCase().match(value)),
state.myPayload.filter(({ height }) => height.toLowerCase().match(value)))
: (state.myPayload.filter(({ name }) => name.toLowerCase().match(value)),
state.myPayload.filter(({ country }) => country.toLowerCase().match(value)),
state.assetsPayload.filter(({ state }) => state.toLowerCase().match(value)))),
},
какие-либо сведения о том, как отфильтровать все значения в этом сценарии?