У меня есть list
, который я хочу отфильтровать, используя параметры из advancedSearchFilters
, который имеет вложенные объекты. Я хочу вернуть список, который соответствует всем параметрам, если таковые имеются.
const list = [
{
additionalPrices: 0,
clientOrderNumber: 'N / A',
companyName: 'Test Company',
completeDate: 'Invalid date',
createdAt: '2019-09-08 16:41:43',
createdBy: 'test@test.com',
deliveryDate: '2019-09-14 16:39:25',
driver: 'Robert Kaszkiewicz',
dropOff: 'Avenida Callao 1234, Buenos Aires, Argentina',
height: 23,
isPreparingTrailer: true,
isSmsSent: true,
isTrailerReady: true,
key: '2104a7bd-5e78-49ce-a1f6-0699ac98f264',
notes: '',
pickUp: 'Poprad, Slovakia',
price: 1400,
quantity: 2,
trailer: 'einzeln',
vehicle: 'Sattel',
vehicleClass: 'Mega',
vehicleId: '12313',
vehicleReadyDate: '2019-09-27 16:41:22',
weight: 123
},
{
clientOrderNumber: 'N / A',
companyName: 'Test Company',
createdAt: '2019-09-26 18:32:18',
createdBy: 'test@test.com',
deliveryDate: '2019-09-20 18:31:45',
driver: 'Michal Kucharski',
dropOff: 'Logroño, Spain',
height: 0,
isPreparingTrailer: false,
isSmsSent: false,
isTrailerReady: false,
key: '388113f5-3927-4fe3-80d5-f2fcf1c7cedd',
notes: '',
orderId: '',
pickUp: '16671 Butano Place, Fontana, CA, USA',
price: 0,
quantity: 1,
trailer: '2er Pack',
vehicle: 'Sattel',
vehicleClass: 'Standard',
vehicleId: 'efgefg',
vehicleReadyDate: '2019-09-27 18:32:08',
weight: 0
},
{
clientOrderNumber: 'N / A',
companyName: 'Test Company',
createdAt: '2019-10-07 14:59:28',
createdBy: 'test@test.com',
deliveryDate: '2019-10-09 14:54:44',
driver: 'Pawel Marczyk',
dropOff: 'München, Germany',
height: 1150,
isPreparingTrailer: false,
isSmsSent: false,
isTrailerReady: false,
key: '795e7531-8655-4e38-a576-e13483922607',
notes: 'alle fertig, vorher anrufen',
orderId: '',
pickUp: 'Soest, Germany',
price: 5000,
quantity: 10,
trailer: '3er Pack',
vehicle: 'Sattel',
vehicleClass: 'Standard',
vehicleId: '1121+23+24',
vehicleReadyDate: '2019-10-07 14:55:19',
weight: 20000
},
];
const advancedSearchFilters = {
companyName: {
modifier: 'equals',
value: 'Test Company'
},
price: {
modifier: 'greaterThan',
value: '54'
},
driver: {
modifier: 'equals',
value: 'Robert'
}
};
const handleFilterModifier = (value, compareValue, modifier) => {
if (modifier === 'lessThan') {
return value > compareValue;
}
if (modifier === 'equals') {
return value === compareValue;
}
if (modifier === 'greaterThan') {
return value < compareValue;
}
return null;
};
const resultList = list.filter(
item => Object.entries(advancedSearchFilters).every(([filterKey, filterVal]) => {
const compareValue = item[filterKey].value;
const value = keys[filterKey];
list = handleFilterModifier(
parseFloat(value),
compareValue,
filterVal
);
return list;
})
);
Вышеприведенная функция resultList
возвращает ошибку.
Я полагаю, что проблема возникает при попытке получить параметры запроса изнутри advancedSearchFilters
. Этот код поможет мне выполнить sh запрос расширенного поиска.