Take the following Javascript Array:
["21587569", "21587570", "21587572", "31856855", "31856854"]
You can visually see that the first 3 items are within a limit of 5 of any other item in that "group", the same can be said for the items at index 3 & 4.
How can I group these "similar" items using Javascript array functions, such as the following output array?
[{"21587569", "21587570", "21587572"},{"31856855", "31856854"}]
The items may not always be presented in order as they are in the example input array.
You could sort and get groups if the delta of last items is smaller than five.
const
data = [21587569, 21587570, 21587572, 31856855, 31856854],
result = [...data]
.sort((a, b) => a - b)
.reduce((r, v) => {
const last = r[r.length - 1];
if (!last || v - last[last.length - 1] > 5) r.push([v]);
else last.push(v);
return r;
}, []);
console.log(result);