Vue JS - массив indexOf не является функцией - PullRequest
0 голосов
/ 24 февраля 2019

Я пытаюсь проверить, присутствует ли число в массиве (что я делал тысячу раз, прежде чем использовать .indexOf()), но сейчас мне кажется, что что-то не хватает.

Метод Vue

showSeat(seat) {
    if( !this.selectedSeats.length ) { 
        this.selectedSeats.push(seat)
    } else {
        let index = this.selectedSeats.indexOf(seat)
        ( index >= 0 ) ? this.selectedSeats.splice(index,1) : this.selectedSeats.push(seat)
    }
}

Первоначально this.selectedSeats равен [], и первое условие выполняется отлично.Однако, когда я пытаюсь добавить еще одно место , я получаю [Vue warn]: Error in event handler for "showSeat": "TypeError: this.selectedSeats.indexOf(...) is not a function".Чего мне не хватает?

1 Ответ

0 голосов
/ 24 февраля 2019

Это один из тех редких случаев в JavaScript, где отсутствие точки с запятой может вызвать огромные проблемы.Эти две строки оцениваются как одно выражение:

 let index = this.selectedSeats.indexOf(seat)
 ( index >= 0 ) ? this.selectedSeats.splice(index,1) : this.selectedSeats.push(seat)

Он пытается выполнить this.selectedSeats.indexOf(seat)(index>=0)

Добавьте точку с запятой в конце вашего indexOf(seat);, и все будет в порядке.

...