我有很多个js数组,可能一秒存入一条数据,从0开始,比如现在到每个数组都有100万条数据了,但是我只用到最后的10万条数据,并且是用的数据下标来标记的,第90万就是arr[899999],我应该怎么处理啊?
把前面的数据delete会不会好一些,delete之后下标不会变,我只会想到这个,或者有什么好的解决方案?
而且程序重启的时候我希望恢复刚刚重启前的数据,怎么弄啊?
我有很多个js数组,可能一秒存入一条数据,从0开始,比如现在到每个数组都有100万条数据了,但是我只用到最后的10万条数据,并且是用的数据下标来标记的,第90万就是arr[899999],我应该怎么处理啊?
把前面的数据delete会不会好一些,delete之后下标不会变,我只会想到这个,或者有什么好的解决方案?
而且程序重启的时候我希望恢复刚刚重启前的数据,怎么弄啊?
const max = 4
// 创建好固定超度的数组
let arr = new Array(max).fill(-1)
let count = 0
let intervalId = setInterval(()=>{
if (count == 10) {
console.log('arr *** end', arr)
clearInterval(intervalId)
} else {
// 将数据存入特定下标, 将下标用序号进行求余操作, 就可循环存入数组
arr[count % max] = count
console.log('arr add', arr)
if (count == 7) {
// 此时我想取数据
console.log('get -------------')
const index = (count + 1) % max
let result = count+1 < max
// 没有被循环存直接取
? arr.slice(0, index)
// 循环存入了, 从当前下标的后一个开始取, 取到末尾, 再从第一个取到当前下标(最后一个)
: [...arr.slice(index), ...arr.slice(0, index)]
console.log(result)
console.log('-------------')
}
count++
}
}, 100)
8 回答4.8k 阅读✓ 已解决
6 回答3.6k 阅读✓ 已解决
5 回答2.9k 阅读✓ 已解决
6 回答2.5k 阅读
5 回答6.4k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
搞一个10万长度的循环队列,每次有新的数据,都往里放。放满之后,就覆盖掉旧的数据。在大数量的情况下,可以复用之前的空间。
循环队列:
使用。比如我存储空间是6,但有20条数据:
可以看到,当存储空间满了之后,就开始覆盖旧的数据了,但存储空间没增长。