这是我的难题,我有以下代码:

var fibs = [1, 2];
for (i = 0; i < (window.innerWidth / 50); i++) {
    if (fibs.length < 15) {
        var n = fibs[i] + fibs[i + 1];
        fibs.push(n);
    }
}


这将创建斐波那契数列的数组。然后,我将fib的内容复制到新数组top。我遇到的麻烦是,我需要每个顶部的第2个和第3个元素成为fibs的反符号。即。 top[0] = fibs[0]; top[1] = -fibs[1]; top[2] = -fibs[2]; top[3] = fibs[3]我希望能够以编程方式执行此操作,因为数组的长度将根据屏幕的宽度而变化。

以下是我要使用的内容。

var top = [];
for (i = 0; i < fibs.length; i++) {
    if (i % 2 == 0 || i % 3 == 0) {
        top[i] = -(fibs[i]);
    } else {
        top[i] = fibs[i];
    }
}


当我要查找的是[-1, 2,-3, -5, -8, 13, -21, 34, -55, -89, -144, 233, -377, 610, -987]时,我得到的是[-1, 2, 3, -5, -8, 13, 21, -34, -55, 89, 144, ... ]

最佳答案

尽管这可能不是最好的方法,但它应该起作用:

var topp = [];
for (i = 0; i < fibs.length; i++) {
    if (i % 3 == 1 || i % 3 == 2) {
        topp[i] = fibs[i] - (2 * fibs[i]);
    } else {
        topp[i] = fibs[i];
    }
}


该代码很容易解释。

编辑:

感谢@alexpods提供有关top关键字的提示。

感谢@Scott Hunter指出逻辑错误。

10-06 11:06