Javascript if语句为true时Else语句仍在运行
我有搜索功能,可以让你搜索加密货币,我正在尝试使用它,如果搜索的参数/硬币与硬币或符号的API标题不匹配,会弹出一个警告框,告诉用户重试 我遇到的问题是,如果if语句为true且存在匹配项,则无论如何都会弹出else语句/警报框。以下是我的axios请求中的代码: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 => {
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");
}
})
}
在警报发生之前,循环执行了多少次?加密是什么样子的?