统计字符串中数字数量的JS代码无法运行,该如何编写正确实现?
问题原因
现有代码的问题出在reduce回调中的判断逻辑错误:/\d/.test(char)本身返回的是布尔值true或false,代码中额外增加了char ===的全等判断,相当于拿单个字符串字符和布尔值做比较,结果永远为false,所以最终统计值一直是0,不符合预期。
修正方案1:直接调整原有reduce写法
const str = "192.168.5.0" // 移除多余的char ===判断即可 const digits = [...str].reduce((a, char) => /\d/.test(char) ? ++a : a, 0); console.log(digits); // 输出结果为8,符合预期
修正方案2:更简洁的match写法
直接用正则全局匹配所有数字字符,再统计长度即可,注意做空值兼容避免匹配不到数字时报错:
const str = "192.168.5.0" const digits = (str.match(/\d/g) || []).length; console.log(digits); // 输出结果为8
内容的提问来源于stack exchange,提问作者Michael
相关产品推荐
相关产品推荐

