Фильтровать данные по минутам VueJs - PullRequest
1 голос
/ 29 сентября 2019

У меня есть таблица данных на моей странице VueJs, и я получаю ее данные с помощью ajax-запроса.Возвращаемые данные выглядят так:

{
    name: "Test Name",
    created_at: "2019-06-14 07:31:15"
}

У меня есть кнопки, которые должны фильтровать данные по следующим правилам:

Created data within the last 5 mins
Created data within the last 15 mins
Created data within the last 30 mins

Учитывая мои created_at, как мне это сделать?У меня есть эта текущая функция

computed: {
    filterData() {
        return this.customers.filter(item => item.created_at.includes(new Date().getDay()+1));
    }
}

Данные this.customers - это мои данные из запроса ajax.

Я просто ссылаюсь на них отсюда Фильтровать данные ответов Дата мудрое значение Исходя из этого, я ожидаю, что данные будут отфильтрованы по данным за 1 день.Но это также не работает для меня.Может быть, потому что моя дата - дата, а не дата?

1 Ответ

0 голосов
/ 29 сентября 2019

Если ваш формат даты разбирается по умолчанию функцией JS Date, вы можете попробовать следующий код.Минус (-) между двумя датами даст разность в миллисекундах.Деление на 60 * 1000 дает разницу в минутах.

a = [{
    name: "Test Name",
    created_at: "2019-09-29 10:00:15"
},
{
    name: "Test Name",
    created_at: "2019-09-29 10:21:15"
},
{
    name: "Test Name",
    created_at: "2019-09-29 09:21:15"
},
{
    name: "Test Name",
    created_at: "2019-09-29 09:50:15"
}]

const filterByLastMins = (mins, arr) => {
    const currentTime = new Date();
    return arr.filter((elem) => {
        const diffInMins = (currentTime -  Date.parse(elem.created_at)) / (1000 * 60);
        return diffInMins < mins
    })
}

res = filterByLastMins(60, a);
console.log(res);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...