我需要帮助创建一个函数,每次以 3 秒的时间间隔从数组中返回 3 个元素。 假设我有一个数组
const Array = [{name:'A'},{name:'B'},{name:'C'},{name:'D'},{name:'E'},{name:'F'},{name:'G'},{name:'H'},{name:'I'}];
它应该返回数组,例如
[{name:'A'},{name:'B'},{name:'C'}]
然后 3 秒后它应该返回数组
[{name:'D'},{name:'E'},{name:'F'}]
依此类推,当数组结束时,再次重复循环。
我尝试在使用切片和过滤器的地方使用 block ,但这只是返回给我一个 block 数组。
非常感谢
最佳答案
您可以使用生成器来做到这一点:
// Takes an array and the of the slice/subarray
function* subArray(array, size) {
let i = 0;
let remaining = true;
while (remaining) {
yield array.slice(i, i + size);
i += size;
if (i >= array.length) {
remaining = false;
}
}
}
// Takes an array, a subarray size, and an interval in seconds
const getSubArraysAtInterval = (array, size, seconds) => {
const iter = subArray(array, size);
const interval = setInterval(() => {
const next = iter.next();
if (next.done) {
clearInterval(interval);
console.log('No values remaining');
} else {
console.log(next.value);
}
}, seconds * 1000)
}
getSubArraysAtInterval([1, 2, 3, 4, 5, 6], 3, 3);
工作 fiddle :https://jsfiddle.net/adrice727/msx3sf03/1/
关于Javascript es6 数组映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44446428/