当前位置: 首页 > 知识库问答 >
问题:

返回NAN的JavaScript类中的乘法方法

顾光明
2023-03-14

我在一个JavaScript类中有一个乘法方法,它应该将数组中非未定义的所有元素相乘。我使用for loop检查每个元素的类型,即number并将它们推到一个空数组,然后使用reduce方法将它们相乘。但我现在有的问题是结果是返回南。我想知道我做错了什么。

下面是我的代码。

null

class Calculator {

    add(numbers) {
        let result = [];
        for (const i in numbers) {
           if (typeof numbers[i] === "number"){
            result.push(numbers[i])
           }
          
        }
        console.log(result.reduce(function (a, b) {
            return a + b;
          }, 0)); // This works as expected
      }

  multiply(numbers) {
    let result2 = [];
    for (const j in numbers) {
       if (typeof numbers[j] === "number"){
        result2.push(numbers[j])
       }
      
    }
    console.log(numbers.reduce((a, b) => a * b)); //This is returning NAN inside of the multiplication result
    
    
  }

  subtract(num1, num2) {
    return num1 - num2;
  }

  divide(num1, num2) {
    return num1 / num2;
  }
 
}
  
 let values = new Calculator();
 values.add([10, undefined, -1, 10, 100]);
 values.multiply([10, 5, 6, 'a']);

null

共有1个答案

闻人景澄
2023-03-14

尝试更改数字。reduce为result2。reduce。请参阅下面的更新代码。

null

       class Calculator {

            add(numbers) {
                let result = [];
                for (const i in numbers) {
                    if (typeof numbers[i] === "number") {
                        result.push(numbers[i])
                    }

                }
                console.log(result.reduce(function (a, b) {
                    return a + b;
                }, 0)); // This works as expected
            }

            multiply(numbers) {
                let result2 = [];
                for (const j in numbers) {
                    if (typeof numbers[j] === "number") {
                        result2.push(numbers[j])
                    }

                }
                console.log(result2.reduce((a, b) => a * b)); //This is returning NAN inside of the multiplication result


            }

            subtract(num1, num2) {
                return num1 - num2;
            }

            divide(num1, num2) {
                return num1 / num2;
            }

        }

        let values = new Calculator();
        values.add([10, undefined, -1, 10, 100]);
        values.multiply([10, 5, 6, 'a']);
 类似资料:
  • 我很熟悉在JavaScript中是“怪异的”,即总是返回,如本文所述。因此,不应进行比较来检查,而应使用isNaN(..)取而代之的是。 所以我惊讶地发现 这似乎不一致。为什么会有这种行为? 它是怎么工作的?方法是否专门检查?

  • 本文向大家介绍在JavaScript中使用NaN值的方法,包括了在JavaScript中使用NaN值的方法的使用技巧和注意事项,需要的朋友参考一下  不带引号的字面常量NaN是一个特殊的值,表示不是非数字。由于NaN总是比较不等的情况,以任何数,包括NaN,它通常是用于指示应该返回一个有效的数的函数的错误条件。 注意:使用isNaN()全局函数来查看是否值是NaN值。 语法 您可以使用以下语法访问

  • 问题内容: 我正在解析JSON事件供稿中的日期-但日期在IE7 / 8中显示为“ NaN”: 我究竟做错了什么?谢谢! 问题答案: 在较旧的浏览器中,您可以编写一个函数来为您解析字符串。 这将创建一个Date.fromISO方法-如果浏览器可以从ISO字符串本地获取正确的日期,则使用该本地方法。 一些浏览器部分正确,但返回了错误的时区,因此仅检查NaN可能不会。 Polyfill: 结果:

  • 我正在尝试用RSA加密对用户输入进行加密。 使用Eclipse中的调试监视器,我可以看到当代码使用“e”为asciiLetter提供动力并尝试mod"n“时,”e“和”n“是一个太大的数字,并且返回无穷大或nan。有什么关于如何改变这一点的指导吗? 我将位长从1024更改为128,但这没有效果。 稍后,我需要解密,但正在努力使这部分工作在事前。

  • 问题内容: 我在这里多次看到类似的问题,但有一个很大的不同。 在其他问题中,返回类型将由参数确定。我想要/需要做的是通过解析后的值确定返回类型。从我收集到的信息来看,以下方法可行: 我只是想确保在我搞砸任何东西之前,它有机会工作。提前致谢。 问题答案: 你做不到 Java返回类型必须是固定的基本类型或对象类。我敢肯定,您能做的最好的事情就是返回一个包装器类型,该包装器类型具有可获取各种可能类型的值

  • 问题内容: 我有一类这样的方法: 我如何在另一个类中调用此方法? 问题答案: 1. 如果要从中调用该方法的类位于同一包中,则创建该类的实例并调用该方法。 2. 使用 3. 最好有个赞等等。 例如: