groupedData = {
const n = 50;
const clonedData = [...data];
const length = clonedData.length;
if (length <= n) {
return clonedData;
}
let result = [];
let index = 0;
while(index < (length - 1)) {
const current = clonedData[index];
const next = clonedData[index + 1];
if (current.y === next.y) {
result.push([current, next]);
const resultLength = result.length;
const afterRemaining = length - (index + 2);
if (resultLength + afterRemaining <= n) {
console.log(`Current result length: ${resultLength}`);
console.log(`Remaining after merge: ${afterRemaining}`);
result = [...result, ...clonedData.slice(index + 2)];
break;
}
index += 2;
} else {
result.push(current);
index++;
}
}
const extra = result.length - n;
if (extra > 0) {
const toMerge = result.splice(result.length - (extra + 1)).flat();
result.push(toMerge);
}
return result.map(aggregateFn);
}