можем ли мы переформулировать этот код в более декларативный?
проблема: групповое число в массиве, значение разности = 1
input1 = [1, 2, 3, 5, 6, 9] output1 -> [[1-2-3], [5-6], [9]]
input2 = [1, 3, 4, 7, 8, 9] output2 -> [[1], [3-4], [7-8-9]]
const arrTime = ["01.00", "02.00", "03.00", "05.00", "10.00", "11.00", "12.00"]
const joinString = (array) => {
let memo = [];
let result = [];
const joinBackAddress = array.map((num, idx) => {
const compare = Math.abs(num - array[idx + 1]);
return compare === 1 ? true : false;
});
const joinFrontAddress = array.map((num, idx) => {
const compare = Math.abs(num - array[idx - 1]);
return compare === 1 ? true : false;
});
array.forEach((item, index) => {
if (joinBackAddress[index] && !joinFrontAddress[index]) {
return (memo = [item]);
} else if (joinBackAddress[index] && joinFrontAddress[index]) {
return memo.push(item);
} else if (joinFrontAddress[index] && !joinBackAddress[index]) {
memo.push(item);
result.push(memo);
return (memo = []);
} else if (!joinBackAddress[index] && !joinFrontAddress[index]) {
return result.push([item]);
}
});
return result;
};
joinString(arrTime)