如何实现mergeUserArray数值包含winArray三位数组合的匹配判断?
解决方案
问题核心
原代码用winArray.includes(Number(mergeUserArray))是严格匹配整个数值,但你要的是检查用户输入的数字里是否包含中奖组合的连续三位数子串,所以得换成字符串子串匹配的思路。
可行实现代码
let winArray = [123, 456, 789]; // let mergeUserArray = [789]; -- 该值会匹配成功 let mergeUserArray = [7189]; // 现在这个值也能匹配成功 // 把中奖数组里的数字全转成字符串 const winStrList = winArray.map(num => num.toString()); // 取出用户输入的数字并转成字符串(这里取数组第一个元素,根据实际场景调整) const userNumStr = mergeUserArray[0].toString(); // 检查是否存在任意中奖组合是用户数字的子串 const isMatch = winStrList.some(winStr => userNumStr.includes(winStr)); if (isMatch) { console.log("Number matched"); } else { console.log("Number not matched"); }
额外正则实现方式
如果想用正则,之前没成功大概率是没正确处理字符串转换,试试这种动态生成正则的写法:
let winArray = [123, 456, 789]; let mergeUserArray = [7189]; const userNumStr = mergeUserArray[0].toString(); // 动态拼接中奖组合成正则表达式 const winReg = new RegExp(winArray.join('|'), ''); const isMatch = winReg.test(userNumStr); console.log(isMatch ? "Number matched" : "Number not matched");
内容的提问来源于stack exchange,提问作者mr.Hritik
相关产品推荐
相关产品推荐

