фильтровать массив объектов с датами - PullRequest
1 голос
/ 18 июня 2020

Я пытаюсь получить данные и сохранить их в 2 отдельных массивах из указанного ниже массива объектов, которые соответствуют следующим двум условиям

  1. Из текущего массива объектов я хочу только получить объекты, месяц которых является текущим месяцем.

  2. другой массив за последние 7 дней

Как мне это сделать? Могу ли я получить совет по работе с финиками, потому что я не очень хорош в этом?

{
    "status": "success",
    "results": 10,
    "orders": [
        {
            "orderID": 1,
            "orderStatus": 1,
            "purAmt": 1000,
            "orderDate": "2020-06-14T03:23:20.000Z",
            "fullName": "velocity",
            "email": "velocity@gmail.com",
            "phone": "999999",
            "flatNo": "b-863",
            "complex": "tara tra",
            "landmark": "kaskd",
            "street": "asdasd",
            "area": "rob city",
            "city": "asda",
            "products": [
                {
                    "productID": 1,
                    "name": "lassi",
                    "price": 62,
                    "image": "images\\rtoRAOwj4-conn.PNG",
                    "quantity": 5
                },
                {
                    "productID": 2,
                    "name": "curd",
                    "price": 55,
                    "image": "curd.png",
                    "quantity": 9
                }
            ]
        },
        {
            "orderID": 2,
            "orderStatus": 1,
            "purAmt": 1000,
            "orderDate": "2020-06-14T03:24:32.000Z",
            "fullName": "velocity",
            "email": "velocity@gmail.com",
            "phone": "999999",
            "flatNo": "b-863",
            "complex": "tara tra",
            "landmark": "kaskd",
            "street": "asdasd",
            "area": "rob city",
            "city": "asda",
            "products": [
                {
                    "productID": 6,
                    "name": "chicken chilly",
                    "price": 65,
                    "image": "images\\PIwc5RQ7s-conn2.PNG",
                    "quantity": 1
                },
                {
                    "productID": 7,
                    "name": "buteer flyyy",
                    "price": 70,
                    "image": "images\\GvIgYj-lO-conn2.PNG",
                    "quantity": 2
                }
            ]
        },
        {
            "orderID": 4,
            "orderStatus": 1,
            "purAmt": 250,
            "orderDate": "2020-06-15T09:04:45.000Z",
            "fullName": "velocity",
            "email": "velocity@gmail.com",
            "phone": "999999",
            "flatNo": "b-863",
            "complex": "tara tra",
            "landmark": "kaskd",
            "street": "asdasd",
            "area": "rob city",
            "city": "asda",
            "products": [
                {
                    "productID": 1,
                    "name": "lassi",
                    "price": 62,
                    "image": "images\\rtoRAOwj4-conn.PNG",
                    "quantity": 1
                },
                {
                    "productID": 2,
                    "name": "curd",
                    "price": 55,
                    "image": "curd.png",
                    "quantity": 1
                }
            ]
        },
        {
            "orderID": 5,
            "orderStatus": 2,
            "purAmt": 250,
            "orderDate": "2020-05-15T10:33:59.000Z",
            "fullName": "velocity",
            "email": "velocity@gmail.com",
            "phone": "999999",
            "flatNo": "b-863",
            "complex": "tara tra",
            "landmark": "kaskd",
            "street": "asdasd",
            "area": "rob city",
            "city": "asda",
            "products": [
                {
                    "productID": 2,
                    "name": "curd",
                    "price": 55,
                    "image": "curd.png",
                    "quantity": 1
                }
            ]
        },
        {
            "orderID": 6,
            "orderStatus": 2,
            "purAmt": 250,
            "orderDate": "2020-06-15T10:41:53.000Z",
            "fullName": "velocity",
            "email": "velocity@gmail.com",
            "phone": "999999",
            "flatNo": "b-863",
            "complex": "tara tra",
            "landmark": "kaskd",
            "street": "asdasd",
            "area": "rob city",
            "city": "asda",
            "products": [
                {
                    "productID": 2,
                    "name": "curd",
                    "price": 55,
                    "image": "curd.png",
                    "quantity": 1
                }
            ]
        },
        {
            "orderID": 7,
            "orderStatus": 2,
            "purAmt": 250,
            "orderDate": "2020-06-15T10:44:58.000Z",
            "fullName": "velocity",
            "email": "velocity@gmail.com",
            "phone": "999999",
            "flatNo": "b-863",
            "complex": "tara tra",
            "landmark": "kaskd",
            "street": "asdasd",
            "area": "rob city",
            "city": "asda",
            "products": [
                {
                    "productID": 2,
                    "name": "curd",
                    "price": 55,
                    "image": "curd.png",
                    "quantity": 1
                }
            ]
        },
        {
            "orderID": 8,
            "orderStatus": 2,
            "purAmt": 250,
            "orderDate": "2020-06-15T11:00:57.000Z",
            "fullName": "velocity",
            "email": "velocity@gmail.com",
            "phone": "999999",
            "flatNo": "b-863",
            "complex": "tara tra",
            "landmark": "kaskd",
            "street": "asdasd",
            "area": "rob city",
            "city": "asda",
            "products": [
                {
                    "productID": 2,
                    "name": "curd",
                    "price": 55,
                    "image": "curd.png",
                    "quantity": 1
                }
            ]
        },
        {
            "orderID": 9,
            "orderStatus": 1,
            "purAmt": 250,
            "orderDate": "2020-06-15T11:01:50.000Z",
            "fullName": "velocity",
            "email": "velocity@gmail.com",
            "phone": "999999",
            "flatNo": "b-863",
            "complex": "tara tra",
            "landmark": "kaskd",
            "street": "asdasd",
            "area": "rob city",
            "city": "asda",
            "products": [
                {
                    "productID": 2,
                    "name": "curd",
                    "price": 55,
                    "image": "curd.png",
                    "quantity": 1
                }
            ]
        }
    ]
}

1 Ответ

1 голос
/ 18 июня 2020

Объект Date здесь очень поможет. Чтобы получать заказы в этом месяце, вы можете попробовать что-то вроде:

orders.filter(order => {
  const orderDate = new Date(order.orderDate);
  const today = new Date();
  const isThisYear = orderDate.getFullYear() === today.getFullYear()
  const isThisMonth = orderDate.getMonth() === today.getMonth();

  return isThisYear && isThisMonth;
})

А чтобы получить за последние 7 дней, вы можете попробовать что-то вроде:

orders.filter(order => {
  const orderDate = Date.parse(order.orderDate); // in milliseconds
  const today = Date.now(); // in milliseconds
  const millisecondsInAWeek = 604800000;

  return orderDate > today - millisecondsInAWeek;
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...