Tome la siguiente matriz de Javascript:
["21587569", "21587570", "21587572", "31856855", "31856854"]Puede ver visualmente que los primeros 3 elementos están dentro de un límite de 5 de cualquier otro elemento en ese "grupo", lo mismo puede decirse de los elementos en el índice 3 y 4.
¿Cómo puedo agrupar estos elementos "similares" usando funciones de matriz de Javascript, como la siguiente matriz de salida?
[{"21587569", "21587570", "21587572"},{"31856855", "31856854"}]Es posible que los elementos no siempre se presenten en el orden en que se encuentran en la matriz de entrada de ejemplo.
Puede ordenar y obtener grupos si el delta de los últimos elementos es menor que cinco.
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);