用于在javascript中选择数字范围的算法

时间:2013-08-09 12:10:24

标签: javascript

我想要你的代码建议这个算法。

想象一下,你有一个数字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());   

2 个答案:

答案 0 :(得分:2)

使用Array.prototype.slice

var start = 0;
var newArr = arr.slice(start, start + 4);

答案 1 :(得分: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)