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

如何修改代码过滤非数字、负数及超出最大值的无效猜测?

解决方案

你需要扩展filter的判断逻辑,同时过滤非数字、NaN、负数/0、超过最大值这几类无效值,具体修改如下:

假设存储的是数字类型的猜测值

如果guessAmount数组里的元素已经是数字类型,直接用以下过滤逻辑:

if(guess == num) {
    // 替换成你实际存储最大值的变量名,比如用户设定的maxGuessValue
    const maxGuessValue = 55; 

    // 过滤出所有有效猜测
    const validGuesses = guessAmount.filter(val => 
        typeof val === 'number' &&  // 确保是数字类型
        !isNaN(val) &&             // 排除NaN
        Number.isInteger(val) &&   // 确保是整数(允许小数可删除此行)
        val > 0 &&                 // 排除0及负数
        val <= maxGuessValue       // 排除超过最大值的数值
    );

    message.innerHTML = `BOOM! You got it! It took you ${guessAmount.length} tries to get it and the numbers you guessed were ${validGuesses}`;
}

若存储的是字符串类型的输入值

如果guessAmount里存的是从输入框获取的字符串(比如"65"),需要先转换为数字再过滤:

if(guess == num) {
    const maxGuessValue = 55;

    const validGuesses = guessAmount
        .map(str => Number(str)) // 把字符串转成数字
        .filter(val => 
            !isNaN(val) && 
            Number.isInteger(val) && 
            val > 0 && 
            val <= maxGuessValue
        );

    message.innerHTML = `BOOM! You got it! It took you ${guessAmount.length} tries to get it and the numbers you guessed were ${validGuesses}`;
}

关键判断说明

  • typeof val === 'number' && !isNaN(val):彻底排除非数字、无法转换为有效数字的内容
  • Number.isInteger(val):仅保留整数(如果你的游戏支持小数猜测,直接删掉这一行即可)
  • val <= maxGuessValue:严格限制猜测值不超过用户设定的最大值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 10:51:11