30秒学会 JavaScript 片段 · 2019年11月13日

30秒学会 JavaScript 片段 – aperture

Returns an array of n-tuples of consecutive elements.

Use Array.prototype.slice() and Array.prototype.map() to create an array of appropriate length and populate it with n-tuples of consecutive elements from arr.
If n is greater than the length of arr, return an empty array.

代码片段

const aperture = (n, arr) =>
  n > arr.length
    ? []
    : arr.slice(n - 1).map((v, i) => [...arr.slice(i, i + n - 1), v]);

使用样例

R.aperture(2, [1, 2, 3, 4]); // [[1, 2], [2, 3], [3, 4]]
R.aperture(3, [1, 2, 3, 4]); // [[1, 2, 3], [2, 3, 4]]
R.aperture(5, [1, 2, 3, 4]); // []