当前位置: 代码迷 >> JavaScript >> 如何在每次循环迭代中删除数组的前三个索引 - JS
  详细解决方案

如何在每次循环迭代中删除数组的前三个索引 - JS

热度:69   发布时间:2023-06-05 14:12:18.0

我需要在每次循环迭代时打印。 在 C# 中,我可以使用 Console.Write(),但在 JS 中 - 数组。

所以这是我的代码:

let firstNum = +gets();
let secondNum = +gets();
let thirdNum = +gets();
let line = +gets();
let array = [0, 0, 0];

print(firstNum);
print(secondNum, thirdNum);

if (line > 2) {
    for (let i = 3; i <= line; i++) {
        for (let j = 0; j < i; j++) {
            let tempNum = firstNum + secondNum + thirdNum;
            firstNum = secondNum;
            secondNum = thirdNum;
            thirdNum = tempNum;
            array.push(thirdNum);
            array.shift();
        }
        print(array);
    }
}

这是tribonacci,但我的结果需要是:

1

-1 1

1 1 3

5 9 17 31

但是,如果是 4 或更多,我会在没有 shift() 的情况下得到这个结果:

1

-1 1

[ 1, 1, 3 ]

[ 1, 1, 3, 5, 9, 17, 31 ]

当在我的循环中使用 shift() 并将 0, 0 ,0 放在我的数组的开头时,我得到了这个结果:

1 -1 1 [ 1, 1, 3 ] [ 9, 17, 31 ]

在最后一次打印中,我需要 5、9、17、31,但是 shift() 删除了 5。所以它删除了前 4 个索引...

如何在没有前 3 个索引的情况下在每次迭代中打印我的数组?

编辑:

输入是 1 -1 1 4

如何在没有前 3 个索引的情况下在每次迭代中打印我的数组?

假设你的意思是字面意思,这里的第一个结果似乎可以很好地工作: : q javascript+print+part+of+

它说:

slice() 方法
返回数组中选定的元素,作为新的数组对象...

句法
array.slice(开始,结束)

参数值
开始可选。 一个整数,指定从哪里开始选择...
结束可选。 一个整数,指定结束选择的位置。 如果省略,将选择从开始位置到数组末尾的所有元素...

所以这个语句应该让javascript打印没有前三个索引元素的数组:
console.log(array.slice(3));

我在循环中尝试了一些带有 slice() 和 shift() 的变体,但在每次迭代中它都会删除或多或少的索引。 所以我改变我的想法并在每次打印迭代后清除我的数组:

if (line > 2) {
    for (let i = 3; i <= line; i++) {

        for (let j = 0; j < i; j++) {
            let tempNum = bigInt(firstNum).add(secondNum).add(thirdNum);
            firstNum = secondNum;
            secondNum = thirdNum;
            thirdNum = tempNum;
            array.push(thirdNum)
        }
        print(array.toString().replace(/,/g, ' '));
        array.length = 0;
    }
}

感谢您帮助使用 slice()。

  相关解决方案