我正在尝试创建一个长度为25的数组,并每1秒生成一个随机数并将其添加到此数组中。
但是,我希望一旦达到数组的长度,旧值开始被新随机生成的值替换。到目前为止,这是我到达的地方,我对javascript并不熟悉,所以欢迎任何改进:
var arr = [];
arr.length = 25;
function generate() {
arr.push(Math.floor(Math.random() * 6) + 1);
}
setInterval(generate, 1000);
任何人都可以告诉我如何将数组的长度强制为25并且一旦达到这个长度就开始用新值替换旧值?我需要将新值添加到数组的末尾,因为这些值将用于生成图形。
由于
答案 0 :(得分:2)
在数组中添加元素之前,您可以检查数组length
。当数组的数组大小达到25
时,您可以再次将索引器变量设置为零。
var arr = [];
var i = 0;
function generate() {
if(arr.length < 25)
arr[i++] = Math.floor(Math.random() * 6) + 1;
else
i=0;
}
正如@megawas建议你可以通过将i除以25来使用余数
var arr = [];
var i = 0;
function generate() {
arr[(i++)%25] = Math.floor(Math.random() * 6) + 1;
}
答案 1 :(得分:2)
如果数组的长度为25,您应该只使用 shiftMDN
删除第一个元素function generate() {
if( arr.length == 25 ) arr.shift();
arr.push(Math.floor(Math.random() * 6) + 1);
}
答案 2 :(得分:0)
我们走了:
var arr = []
var arr_position = 0
var arr_length = 25
function generate() {
arr[arr_position] = Math.floor(Math.random() * 6) + 1
if(arr_position == arr_length-1){
arr_position = 0
} else {
arr_position++
}
}
setInterval(generate, 1000)
答案 3 :(得分:0)
var arr = [];
var constant = 25;
function generate() {
arr.push(Math.floor(Math.random() * 6) + 1);
if(arr.length == constant){
arr.splice(0,1);
}
}
setInterval(generate, 1000);