как отфильтровать данные json по диапазону дат и статусу доставки - PullRequest
0 голосов
/ 07 мая 2020

У меня есть JSON данные из API в формате:


    const data =  [ 
          { 
          order_id: 1,
           delivery_status: 'pending',
           dispatcher_id: 129,
           shopify_order_reference: '2195824935049',
           updated_at: '2020-04-22T00:09:01.275Z',
           item_count: 1 
           },
         { order_id: 2,
           delivery_status: 'pending',
           dispatcher_id: 129,
           shopify_order_reference: '2216944500873',
           updated_at: '2020-04-22T00:46:27.562Z',
           item_count: 2 
           }]

Я пытаюсь отфильтровать данные этого сына по диапазону дат, скажем min_date = '2020-04-22' и max_date = «2020-04-23», а также по статусу доставки, например, delivery_status = «ожидает» или «завершено», в зависимости от обстоятельств. Я попытался написать это, чтобы отфильтровать данные в зависимости от параметра, предоставленного пользователем в параметрах запроса (скажем, чтобы сделать его динамическим c). Любая помощь с этим?

   let query =  { delivery_status: "pending",  min_date: '2020-04-22', max_date: '2020-04-23' }

   const availableFilters = ['delivery_status', 'min_date', 'max_date'];

           const selectedFilterKeys = [];

           const selectedFilterValues = [];

           for (const x in query) {
               if (availableFilters.indexOf(x) >= 0) {
                   selectedFilterKeys.push(x);
                   selectedFilterValues.push(query[x]);
               }
           }
   // filter function
   filterData = (data, query) => {
       const filteredData = data.filter((item) => {
           for (let key in query) {
               if (item[key] === undefined) {
                   return false;
               }

           }
           return true;
       });
       return filteredData;
   };

let result = filterData(data, query);

1 Ответ

0 голосов
/ 07 мая 2020

Ваша функция должна быть такой:

filterData = (data, query) => {
    const filteredData = data.filter((item) => {
        for (let key in query) {
        console.log(key)
            if (item[key] === undefined) {
                return false;
            }
             return true;

        }

    });
    return filteredData;
};

Ваша команда return true была отключена. Выполнение вашего кода никогда не доходило до случая else.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...