Skip to content Skip to sidebar Skip to footer

How To Create Windowed Slice Of Array In Javascript?

I'm looking for an array method implementation named Array.window(n) that invoked on an array with parameter n, would give a contiguous overlapping array slice. Example: let a = [1

Solution 1:

Here you go with a slightly shorter example using array functions:

let a = [1, 2, 3, 4, 5, 6];
functionwindowedSlice(arr, size) {
  let result = [];
  arr.some((el, i) => {
    if (i + size > arr.length) returntrue;
    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));

Solution 2:

I think this would suffice:

functionarrayWindow(array, n) {
  if (array.length < n || n <= 0) {
    return []
  }

  let arrayLength = array.lengthlet result = []
  for (let i = 0; i < arrayLength; i++) {
    let slicedArray = array.slice(i, n+i)
    if (slicedArray && slicedArray.length === n) {
      result.push(slicedArray)
      continue
    }
    break
  }
  return result
}

let arr = [1, 2, 3, 4, 5, 6]
console.log(arrayWindow(arr, 2))
console.log(arrayWindow(arr, 3))
console.log(arrayWindow(arr, 4))
console.log(arrayWindow(arr, 5))
console.log(arrayWindow(arr, 10))
console.log(arrayWindow(arr, 0))

Solution 3:

Here is a simple rolling window function. Notice that we can determine the number of iterations based on array length minus the desired window size.

/**
 * Produces a rolling window of desired length {w} on a 1d array.
 * 
 * @param {Array} a The 1d array to window.
 * @param {Number} w The desired window size.
 * @return {Array} A multi-dimensional array of windowed values.
 */functionrolling(a, w) {
    let n = a.length;
    let result = [];

    if (n < w || w <= 0) {
        return result;
    }

    for (let i = 0; i < n - w + 1; i++) {
        result.push(a.slice(i, w + i));
    }

    return result;
}

let a = [1, 2, 3, 4, 5];
console.log(JSON.stringify(rolling(a, 3)));

Post a Comment for "How To Create Windowed Slice Of Array In Javascript?"