Proposal: `Array.prototype.chunks` and `Array.prototype.windows`

# Joseph Rocca (6 years ago)

Apologies if this has already been suggested and discussed somewhere, but I couldn't find anything. I'm learning Rust at the moment, and found myself wishing that JavaScript had chunks and windows array methods.

doc.rust-lang.org/std/primitive.slice.html#method.windows

doc.rust-lang.org/std/primitive.slice.html#method.chunks

A swap method (like Rust's) might be handy too. Has there been any discussion on new array methods like this? I think it's great that slice notation and range() type stuff tc39/proposal-slice-notation#19

is being discussed, and I think it would be neat if JavaScript got some more array-manipulation features to make wrangling data more pleasant.

Any thoughts?

# Cyril Auburtin (5 years ago)

Nice, tc39/proposal-slice-notation#19 is really awesome. I hope this idea doesn't get abandoned

I feel you can swap things easily already;

let x = 1, y = 2;
[x, y] = [y, x];

Chunks could be written

// take chunks of 4 from arr
// with slice+range operator proposal
const chunks = [0:Math.ceil(arr.length/4)].map(i => arr[4*i:4*(i+1)])
// vs
const chunks = Array.from({length: Math.ceil(arr.length/4)}, (_,i) =>

arr.slice(4*i, 4*(i+1)))