Javascript if语句为true时Else语句仍在运行

Javascript if语句为true时Else语句仍在运行,javascript,reactjs,if-statement,Javascript,Reactjs,If Statement,我有搜索功能,可以让你搜索加密货币,我正在尝试使用它,如果搜索的参数/硬币与硬币或符号的API标题不匹配,会弹出一个警告框,告诉用户重试 我遇到的问题是,如果if语句为true且存在匹配项,则无论如何都会弹出else语句/警报框。以下是我的axios请求中的代码: cryPrice(param){ axios.get(`https://api.coinmarketcap.com/v1/ticker/?limit=0`) .then(res => {

我有搜索功能,可以让你搜索加密货币,我正在尝试使用它,如果搜索的参数/硬币与硬币或符号的API标题不匹配,会弹出一个警告框,告诉用户重试

我遇到的问题是,如果if语句为true且存在匹配项,则无论如何都会弹出else语句/警报框。以下是我的axios请求中的代码:

cryPrice(param){
    axios.get(`https://api.coinmarketcap.com/v1/ticker/?limit=0`)
        .then(res => {
            const cryptos = res.data;
            const price = []

            for(let title in cryptos){
                const cryptoTitle = cryptos[title].name.toUpperCase();
                const cryptoSymbol = cryptos[title].symbol.toUpperCase();

                if(cryptoTitle === param || cryptoSymbol === param){
                    price.push(cryptos[title].price_usd);       
                }else{
                    alert("Please try again");
                    break;
                }
            }
            this.setState({
                priceResults: price
            })
        })
    }

您可以在某些元素上找到匹配项,但会对其他元素发出警报,所有与param不匹配的元素都会发出警报。您可能只应该在循环执行停止且没有匹配货币时发出警报。

您的代码循环数组中的每个项目,一旦遇到不匹配的项目,它就会发出警报并中断循环

你可能想要的更像

cryPrice(param){
    axios.get(`https://api.coinmarketcap.com/v1/ticker/?limit=0`)
    .then(res => {
        const priceResults = res.data
            .filter(item => [item.name.toUpperCase(), item.symbol.toUpperCase()].includes(param))
            .map(item => item.price_usd);
        if (priceResults.length) {
            this.setState({priceResults});
        } else {
            alert("Please try again");
        }
    })
}

在警报发生之前,循环执行了多少次?加密是什么样子的?