for ([i, o] of Object.entries(rules)) { }i = 'i', o = '1' — что на входе (i = input), что должно быть на выходе (o = output). Что на что будем менять.value заменить все вхождения значения переменной i на значение переменной o. Проще всего это сделать регулярными выражениями.new RegExp('i', 'g') создаёт регулярку `/i/g` – она соответствует одной букве 'i', а флаг 'g' (global) значит, что нужно найти не одно первое, а все подходящие вхождения. И заменить их на 2-й аргумент функции replace(). id начнут повторяться: длина-то уменьшается при удалении. isNaN(42) // false>>> posts = ['20210627/habr', '20210501/pervomay', '20210509/pobeda']
>>> sorted(posts)
['20210501/pervomay', '20210509/pobeda', '20210627/habr'] // неповторимый оригинал
arr.reduce((acc, n, i) => (
(!i || n === 1) && acc.push([]),
acc[acc.length - 1].push(n),
acc
), [])
// жалкая традиционная пародия
arr.reduce((acc, n, i) => {
if (!i || n === 1) acc.push([]);
acc[acc.length - 1].push(n);
return acc;
}, [])
\W