首页 > 解决方案 > 为什么 indexOf 打印 -1 虽然值在数组中?

问题描述

我不明白为什么 indexOf() 打印 -1 尽管值在数组中。我与函数 include() 的结果相同,它返回错误。

我想我不明白一些东西,或者我忘记了一些东西。

当我们可以看到值在数组中时,您是否知道为什么结果为负?

谢谢

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

显示问题

标签: javascriptarraysreactjs

解决方案


indexOfincludes搜索完全匹配。

this.props.movie.id将是491418而数组中的值为"491418"

您需要转换this.props.movie.id为字符串。

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

推荐阅读