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

如何匹配navigator.userAgent字符串从对象数组获取对应手机型号

你的代码同时存在语法错误和逻辑疏漏,具体问题及修正方案如下:

问题说明

  • 正则构造语法错误:detectPhone.match(phoneModels[i].code/g)的写法不符合JS语法规则,字符串变量不能直接拼接正则修饰符,运行时会直接抛出语法错误。如果要使用变量内容作为匹配规则,必须通过RegExp构造函数创建正则实例。
  • 大小写匹配逻辑缺失:UA字符串中的型号编码可能是大小写混合格式,你预设的code字段为全大写,默认大小写敏感的匹配规则会导致小写编码(比如你举例的SM-N975f)匹配失败。
  • 迭代变量未声明:for循环中的i没有加声明关键字,会成为全局变量,可能引发其他未知的作用域冲突问题。

修正后代码

<div id="compare-phone-display"></div>
    
<script>
function compare(){
    const detectPhone = navigator.userAgent;
    const phoneModels = [
        {
            code: "SM-N975F",
            name: "Note 10"
        },
        {
            code: "SM-G900P",
            name: "Galaxy S5"
        }
    ];
    for(let i = 0; i < phoneModels.length; i++) {
        // 构造正则,i修饰符忽略大小写,无需提取匹配结果用test方法性能更优
        const matchReg = new RegExp(phoneModels[i].code, 'i');
        if(matchReg.test(detectPhone)) {
            document.getElementById("compare-phone-display").innerHTML = phoneModels[i].name;
            // 匹配到对应型号后直接跳出循环,避免后续匹配覆盖结果
            break;
        }
    }
}
compare();
</script>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 20:15:02