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

如何让Array.includes()判断时不区分值的字符串、数字类型

问题原因

Array.prototype.includes 底层采用严格相等规则(===)做匹配,数字1和字符串"1"类型不同,因此判定为不相等,返回false。

解决方案

  • 方案1:统一转换类型后匹配
    把数组所有元素和待匹配值都转为同一种类型(字符串或数字)后再调用includes,适合需要复用转换后数组的场景:
    let exceptLayers: (string | number)[] = [1,2];
    let n = "1";
    
    // 统一转成字符串后判断
    let v = exceptLayers.map(item => String(item)).includes(String(n));
    console.log(v); // 输出 true
    
  • 方案2:用some方法自定义匹配规则
    无需修改原数组,直接自定义匹配逻辑,大数组场景下性能更优:
    let exceptLayers: (string | number)[] = [1,2];
    let n = "1";
    
    // 方式1:统一转字符串对比,逻辑更可控
    let v = exceptLayers.some(item => String(item) === String(n));
    // 方式2:直接用宽松相等==,代码更简洁,确认无其他边界类型时可使用
    // let v = exceptLayers.some(item => item == n);
    
    console.log(v); // 输出 true
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:36:06