首页 > 解决方案 > 如何在 JavaScript 中创建窗口化的数组切片?

问题描述

我正在寻找一个名为的数组方法实现Array.window(n),它在带有参数的数组上调用n,会给出一个连续的重叠数组切片。

例子:

let a = [1, 2, 3, 4, 5, 6]
a.window(2) // [[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]]
a.window(3) // [[1, 2, 3], [2, 3, 4], [3, 4, 5], [4, 5, 6]]
a.window(4) // [[1, 2, 3, 4], [2, 3, 4, 5], [3, 4, 5, 6]]
a.window(10)// []

我怎样才能做到这一点?

标签: javascriptarrays

解决方案


在这里,您将使用一个使用数组函数的稍短的示例:

let a = [1, 2, 3, 4, 5, 6];
function windowedSlice(arr, size) {
  let result = [];
  arr.some((el, i) => {
    if (i + size > arr.length) return true;
    result.push(arr.slice(i, i + size));
  });
  return result;
}
console.log(windowedSlice(a, 2));
console.log(windowedSlice(a, 3));
console.log(windowedSlice(a, 4));
console.log(windowedSlice(a, 5));


推荐阅读