#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)