Значение фильтра объекта в VueJS - PullRequest
0 голосов
/ 07 марта 2020

Мне нужно проверить, присутствует ли в объекте значение из startAt . Он должен вернуть id этого объекта, если он находится в нем.

Object:

[{
  "id": "1234567",
  "createTimestamp": "2020",
  "name": {
    "action": "",
    "allDay": false,
    "category": "Misc",
    "startAt": "05",
    "title": "foo"
  },
  "updateTimestamp": "2020"
}]

Ниже приведено то, что я имею до сих пор. Фильтрация работает, но я не могу получить доступ к id , чтобы вернуть его.

<div v-for="(hour, i) in 24" :key="i">
  {{ filterByHour(hour) }}
</div>
filterByHour(id) {
  if (id < 10) {
    id = 0 + id
  }

  const result = this.events.filter(item => item.name.startAt === id.toString())
  return result
}

Как вернуть id объекта?

1 Ответ

1 голос
/ 07 марта 2020
  1. Я думаю, что проблема в id = 0 + id. Когда id равен 5, эта строка оценивается как 5, только не 05. Измените значение на id = '0' + id, которое преобразуется в строку.

  2. После filter используйте map для извлечения идентификатора.

const events = [
  {
    id: "1234567",
    createTimestamp: "2020",
    name: {
      action: "",
      allDay: false,
      category: "Misc",
      startAt: "05",
      title: "foo"
    },
    updateTimestamp: "2020"
  }
];

function filterByHour(id) {
  if (id < 10) {
    id = "0" + id;
  }

  const result = events
    .filter(item => item.name.startAt === String(id))
    .map(x => x.id);
  return result;
}

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