3

我想要您对此算法的代码建议。

想象一下,你有一个数字 0 到 9 的数组。

在控制台中,您需要始终打印一组 4 个数字,从 0 开始。

所以例如第一组将是

0 - 1 - 2 - 3

当发生事件时,您需要打印下一个数字并从一堆中删除一个

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 回答