Javascript es6 数组映射

标签 javascript arrays web ecmascript-6

我需要帮助创建一个函数,每次以 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/

相关文章:

javascript - 放大 - 缩小 Javascript 背景上的问题

javascript - 从 componentDidMount() 访问对象

php - in_array() 期望参数 2 为数组,Classipress 中给出的字符串

java - 从查询中填充 Jtable

javascript - 使用 slimscroll 时浏览器滚动条有时不起作用

javascript - 是否可以在 html 文本字段中显示图像?

javascript - 即使使用修改上下文的函数也不要修改上下文

javascript - 请帮助我完成这个简单的脚本

javascript - 设置自定义有效性 "Empty"

ios - 在数组上映射一个 void(非返回函数)