数组中indexOf查找字符串'2'正常,查找数字2返回-1,原因何在?
问题原因分析
JavaScript 的 indexOf() 方法在匹配元素时使用**严格相等(===)**规则,会同时校验值和数据类型是否完全一致。
你的情况具体是:
- 数组中索引为3的元素是字符串类型的
"2",所以用字符串"2"查找时能精准匹配,返回结果3。 - 变量
day = 2是数字类型,调用array.indexOf(day)时,数字2和数组里的字符串"2"类型不匹配,严格相等比较不通过,因此返回-1(代表未找到目标元素)。
解决办法
- 将数字变量转为字符串后再查找:
array.indexOf(String(day)) - 统一数组元素类型为数字,确保数组里的1至20都是数字类型,此时用数字
2查找就能正常匹配到对应位置
内容的提问来源于stack exchange,提问作者Dave
相关产品推荐
相关产品推荐

