You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript includes函数始终返回false,请帮忙排查代码问题

问题排查:JavaScript includes() 始终返回false的原因

嘿,这问题其实挺典型的——类型不匹配在搞鬼!咱们来拆解下你的代码:

  • 你往arr1里存元素的时候,用了Number(arr.value)把输入转成了数字类型
  • 但判断的时候,你直接用了val.value,它是从输入框拿到的字符串类型

而includes()方法是用**严格相等(===)**来判断匹配的,字符串和数字哪怕字面值一样,类型不同也不会被判定为相等,比如'5' === 5是false,所以你的includes()永远返回false,自然只会走else分支。

修复方案(二选一就行)

方案1:判断时把输入值转成数字

修改button2的点击事件代码:

button2.addEventListener("click",function(){
 console.log(val.value);
 // 把val.value转成数字再判断
 if(arr1.includes(Number(val.value))){
 console.log(`found at ${arr1.indexOf(Number(val.value))}`);
 }else{
 console.log("not found");
 }
});

方案2:统一存储字符串(不推荐,但也能解决问题)

如果你不需要存数字类型,也可以把存元素的时候去掉Number()转换:

button1.addEventListener("click",function(){
 arr1.push(arr.value); // 直接存字符串
 console.log(arr1);
});

不过这种方案不太建议,因为如果后续要对数组里的元素做数值计算,还得再转类型,麻烦。

额外小提示

另外,indexOf()这里也要注意和includes()用一样的类型哦,不然可能会返回-1,所以方案1里也要把val.value转成数字再传给indexOf()。

内容的提问来源于stack exchange,提问作者andy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:49:48