Почему индекс печати -1, хотя значения находятся в массиве?

#javascript #arrays #reactjs

#javascript #массивы #reactjs

Вопрос:

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

Я думаю, что я чего-то не понимаю или я что-то забыл.

Есть ли у вас какие-либо идеи о том, почему результат отрицательный, когда мы видим, что значения находятся в массиве?

Спасибо

 var i = 0
let array = []

class MovieRow extends React.Component {
    constructor(props) {
        super(props)
        this.addFavorite = this.addFavorite.bind(this)
        this.deleteFavorite = this.deleteFavorite.bind(this)
        this.state = {
            isFaved: false,
            favMovie: ""
        }
    }

    addFavorite() {
        this.setState({isFaved: true})
        this.state.favMovie = "".concat(baseURL, 'movie/', this.props.movie.id ,'?api_key=', APIKEY)    
        var counts = []
        for (var i = 0; i < myFavoriteMovies.length; i  ) {
            var index = myFavoriteMovies[i]
            counts[index] = counts[index] ? counts[index]   1 : 1;
        }       
        if(myFavoriteMovies.indexOf(this.state.favMovie) === -1) {
            myFavoriteMovies.push(this.state.favMovie)  
            localStorage.setItem(this.props.movie.id, this.state.favMovie)  
        }
    }

    deleteFavorite() {
        this.setState({isFaved: false})
        var removeThisMovie = myFavoriteMovies.indexOf(this.state.favMovie)
        myFavoriteMovies.splice(removeThisMovie,1)
        localStorage.removeItem(this.props.movie.id,removeThisMovie)
    }
    componentDidMount() {
        console.log(array)
        console.log("Value = " this.props.movie.id)
        console.log("Res indexOf = "  array.indexOf(this.props.movie.id))
    }
  

проблема с отображением

Комментарии:

1. Вы сравниваете строки и целые числа.

2. можете ли вы разместить код унаследованного класса

3. Упс… Спасибо, Дэвид

Ответ №1:

indexOf и includes выполните поиск точных совпадений.

this.props.movie.id будет, 491418 пока значение в массиве "491418" .

Вам нужно преобразовать this.props.movie.id в строку.

 array.indexOf(""   this.props.movie.id)