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

Я не понимаю, почему indexOf() печатает -1, хотя значения находятся в массиве. У меня такой же результат с функцией include(), она возвращает мне 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.info(array)
        console.info("Value = "+this.props.movie.id)
        console.info("Res indexOf = " +array.indexOf(this.props.movie.id))
    }

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

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

David Hoelzer 08.03.2019 12:24

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

Mateus Martins 08.03.2019 12:26

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

crg 08.03.2019 12:31
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
3
61
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

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

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

Другие вопросы по теме