[英]Javascript es6 array mapping
我需要幫助來創建一個函數,該函數每次以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'}]
然后三秒鍾后,它應該返回數組
[{name:'D'},{name:'E'},{name:'F'}]
以此類推,當數組結束時,再次重復循環。
我嘗試在使用切片和過濾器的情況下使用塊,但這只是將我的塊數組一起返回。
非常感謝
您可以使用生成器執行此操作:
// 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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.