3

このアルゴリズムのコードの提案をお願いします。

0 から 9 までの配列があるとします。

コンソールでは、常に 0 から始まる 4 つの数字のセットを出力する必要があります。

たとえば、最初のセットは

0 - 1 - 2 - 3

イベントが発生すると、次の番号を出力し、山から 1 つを削除する必要があります。

1 - 2 - 3 - 4

イベントが発生したときに同じことをする必要があります

2 - 3 - 4 - 5

のように最後の数字を表示するまで続きます

6 - 7 - 8 - 9

これを JavaScript で実装する最もエレガントで高速な方法は何ですか?

元の配列に影響を与えずに。

ソリューション

var range = [0,1,2,3,4,5,6,7,8,9];
var start = -1;

function get4()
{
    start++;
    if(start < 7 ) {

        return range.slice(start,start+4);
    }

}


console.log(get4());
console.log(get4());
console.log(get4());
console.log(get4());
console.log(get4()); 
console.log(get4());  
console.log(get4());   
4

2 に答える 2

2

Array.prototype.sliceを使用します:

var start = 0;
var newArr = arr.slice(start, start + 4);
于 2013-08-09T12:12:24.930 に答える
1
var range = [0,1,2,3,4,5,6,7,8,9];
var start = -1;

function get4()
{
    start++;
    return range.slice(start,start+4);
}

console.log(get4()); //[0, 1, 2, 3]
console.log(get4()); //[1, 2, 3, 4]
console.log(get4().join(' - ')); //2 - 3 - 4 - 5  (use join if you want them formatted as a string)

console.log(range); //[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] (is still intact)
于 2013-08-09T12:14:45.760 に答える