IZUM,
задача прежняя, можно было не плодить темы, добавлена фильтрация к коду предложенному ранее, ловит и фильтрует не только пары, но и цепочки любой длины.
function repeat(arr) {
let retry = [],
temp;
arr.reduce(
function(prev, current, index, arr) {
if (prev === current) temp.push(index);
else temp = [index];
if (temp.length == 2) retry.push(temp);
return current;
}
);
return retry
}
const ms = [2, 8, 13, 15, 19, 27, 33, 36, 43, 46],
mo = [0, 4, 6, 11, 17, 21, 25, 31, 38, 41, 45, 48];
function merge(a, b, l) {
let s = [...a, ...b].sort((a, b) => a - b);
let arr = s.map(k => a.includes(k));
arr = repeat(arr).map(ar => ar.map(i => s[i]));
if (l !== void(0)) {
let i = arr.findIndex(([a, ...b]) => a > l);
let dp = arr[i] || [],
dL = [];
if (i > 0)
for (; i--;) {
let b = arr[i].at(-1);
if (b < l) {
dL = arr[i]; break;
}
}
return [dL, dp]
}
return arr
}
console.log(merge(ms, mo));
console.log(merge(ms, mo, 17));
console.log(merge(ms, mo, 23));