How to create windowed slice of array in JavaScript?

后端 未结 3 1626
旧时难觅i
旧时难觅i 2021-01-16 21:28

I\'m looking for an array method implementation named Array.window(n) that invoked on an array with parameter n, would give a contiguous overlappin

3条回答
  •  孤独总比滥情好
    2021-01-16 21:44

    I think this would suffice:

    function arrayWindow(array, n) {
      if (array.length < n || n <= 0) {
        return []
      }
    
      let arrayLength = array.length
      let 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))

提交回复
热议问题