Почему мой фильтр не работает, когда я добавляю промежуточные числа? - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь показать и скрыть элементы из массива. Весь фильтр работает хорошо, кроме цифр. Когда я использую этот фильтр, item.sprint === не захватывает this.state.currentSprint, а просто отображает оба:

{
  this.state.personalItems
  .filter(
    item => item.user == this.state.user 
    || item.public == "true" 
    && item.sprint === this.state.currentSprint
  )
  .map((l, i) => ())
}

Эта переменная соответствует 1 === 2, как в следующем примере:

{
  this.state.personalItems
    .filter(
      item => item.user == this.state.user 
      || item.public == "true" 
      && 1 === 2
    )
    .map((l, i) => ())
}

Я уже проверял, являются ли они целыми числами et c. у кого-нибудь есть решение, где что-то идет не так?

1 Ответ

1 голос
/ 14 июля 2020

Проверить operator precedence for && and ||. В вашем коде он будет оценивать состояние, как показано ниже.

item => item.user == this.state.user 
    || (item.public == "true" && item.sprint === this.state.currentSprint)

Вы должны использовать условие переноса || с () и обновить условие, как показано ниже.

{
  this.state.personalItems
  .filter(
    item => (item.user == this.state.user || item.public == "true")
            && item.sprint === this.state.currentSprint
  )
  .map((l, i) => ())
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...