繁体   English   中英

如何按日期范围和交货状态过滤 json 数据

[英]how to filter json data by date range and delivery status

我有来自 API 格式的 JSON 数据:


    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 = 'pending' 或 'completed' 视情况而定可能是。我试着写这个来根据用户在查询参数中提供的参数过滤数据(比如让它动态)。有什么帮助吗?

   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);

你的 function 应该是这样的:

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 案例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM