В ruby Я могу использовать chunk_while как таковой:
chunk_while
a = [1,2,4,9,10,11,12,15,16,19,20,21] b = a.chunk_while {|i, j| i+1 == j } p b.to_a #=> [[1, 2], [4], [9, 10, 11, 12], [15, 16], [19, 20, 21]]
Каков наилучший способ сделать это в JavaScript?
Вы можете создать функцию chunkWhile() с помощью Array.reduce():
chunkWhile()
Array.reduce()
const chunkWhile = (predicate, arr) => arr.reduce((r, n) => { let last = r[r.length - 1] if(!last || !predicate(last[last.length - 1], n)) { last = [] r.push(last) } last.push(n) return r }, []) const a = [1,2,4,9,10,11,12,15,16,19,20,21] const result = chunkWhile((i, j) => i + 1 === j, a) console.log(result)