遇到一个奇怪的现象:JavaScript Array.indexOf(在Node.js中)

遇到一个奇怪的现象:JavaScript Array.indexOf(在Node.js中),javascript,arrays,node.js,indexof,parseint,Javascript,Arrays,Node.js,Indexof,Parseint,当我试图解决这个问题时,我遇到了一个奇怪的问题:JavaScript Array.indexOf(在Node.js中)。 代码如下所示: var primes = require('./primes1000.js'); var bigPrimes = require('./primes50000.js'); var maxNumber = 2; var maxPair = {}; var getQuadratic = function(b) { var i = 0; var a

当我试图解决这个问题时,我遇到了一个奇怪的问题:JavaScript Array.indexOf(在Node.js中)。 代码如下所示:

var primes = require('./primes1000.js');
var bigPrimes = require('./primes50000.js');
var maxNumber = 2;
var maxPair = {};

var getQuadratic = function(b) {
    var i = 0;
    var a = 0;
    while (Math.abs(a) < 1000) {
        var prime = primes[i];
        var a = prime - 1 - b;
        var length = getMaxNumber(a, b) - 1;
        if (length > maxNumber) {
            maxNumber = length;
            maxPair = {
                a: a,
                b: b
            };
            console.log(maxPair, maxNumber);
        }
        i++;
    }
};

var getMaxNumber = function(a, b) {
    var isPrime = true;
    var n = 1;
    while (isPrime) {
        n = n + 1;
        var result = (n + a) * n + b;

        isPrime = (bigPrimes.indexOf(result) !== -1);
        // if ((a === 1) & (b === 41)) {
        //     console.log(result, isPrime);
        // }
    }

    return n;
};

for (var i = 0; i < primes.length; i++) {
    getQuadratic(primes[i]);
}
问题发生在

bigPrimes.indexOf(result)
当result=47时,indexOf方法返回-1,这意味着找不到

经过大量的调试和测试,最后我将节点更改为

bigPrimes.indexOf(parseInt(result))
然后它就起作用了

但结果是

typeof result

都是“数字” 及

返回true


我不明白为什么必须解析int才能获得正确的indexOf返回值。

由于某种原因,您的结果可能是一个浮点。JavaScript只有一个数字类。这不是一种很好的乘法、除法语言。但是我想把它转换成Int并不是一件坏事。我不认为这有什么特别的原因

typeof result
typeof bigPrimes[14]
parseInt(result) === result