最近在通过数组的 reduce
方法筛选非字母字符时遇到一个比较迷惑的问题,代码如下:
const s = "ab-cd"
const rule = /[A-Z]|[a-z]/g
const symbols = s.split('').reduce((arr, char, index) => {
if (!rule.test(char)) {
console.log(!rule.test(char), '///')
arr.push({ char, index})
}
return arr
}, [])
console.log(symbols)
运行后的结果如下:
为什么 false
也能执行 push
。。。。
但是如果把正则改成 /[A-Z]|[a-z]/
, 最后的结果就是正确的。
有大佬可以帮忙解惑嘛~~
https://www.cnblogs.com/Bacra...