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

时间:2019-02-25 09:59:00

标签: javascript arrays for-loop

我需要在每次循环迭代中打印。在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

但是如果 line 为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

2 个答案:

答案 0 :(得分:1)

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

假设您的字面意思是,这里的第一个结果似乎很好用: https://www.google.com/search?q=javascript+print+part+of+array

它说:

  

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

     

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

     

参数值
  开始(可选)。一个整数,指定从何处开始选择...
  结束。可选。一个整数,指定结束选择的位置。如果省略,将从开始位置到数组结尾的所有元素都将被选中...

因此,此语句应使javascript打印不包含前三个索引元素的数组:
console.log(array.slice(3));

答案 1 :(得分:1)

我在循环中尝试了slice()和shift()的一些变体,但在每次迭代中都会删除更多或les索引。因此,我改变了主意并在每次打印迭代后清除了数组:

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()的帮助。