const newArr = [];
for (const n of arr) {
const [ us, s ] = n.us.split('-').map(n => n.split('_').map(Number));
newArr.push({
...n,
us: arr1.filter(n => us.includes(n)),
s,
});
}
const newArr = arr.map(function(n) {
const us = n.us.match(/\d+/g).map(n => +n);
const s = us.splice(-1);
return {
id: n.id,
us: this(us),
s,
};
}, us => arr1.filter(Set.prototype.has.bind(new Set(us))));
Всё работает, но после внесения дополнений в репо, приходится ребилдить webpack, возможно, обновлять composer'ом пакеты прямо на живом
Есть смутные подозрения, что это не так должно делаться, а, возможно, надо выкатывать уже готовые Docker-образы, где все сбилдено
const countUniqueChars = str =>
new Set(str).size;
const countUniqueChars = str => [...str]
.reduce((acc, n) => (acc.includes(n) || acc.push(n), acc), [])
.length;
const countUniqueChars = str => Array
.from(str)
.reduce((acc, n, i, a) => acc + (i === a.indexOf(n)), 0);
const countUniqueChars = str => Object
.keys(Object.fromEntries([].map.call(str, n => [ n, 1 ])))
.length;
const countUniqueChars = str => str
.split('')
.sort()
.filter((n, i, a) => n !== a[i - 1])
.length;
const countUniqueChars = str =>
(str && str.match(/(.)(?!.*\1)/g)).length;
[ 1, 2 ]
, например. Или [ 5, 6, 8, 9 ]
.const range = ([...arr]) => arr
.sort((a, b) => a - b)
.reduce((acc, n, i, a) => (
(n === a[i - 1] + 1) || acc.push([ n ]),
acc[acc.length - 1][1] = n,
acc
), [])
.map(([ a, b ]) => a === b ? a : `${a}-${b}`)
.join(', ');
const range = arr => ''.concat(...arr
.slice()
.sort((a, b) => a - b)
.reduce((acc, n, i, a) => (
n !== a[i - 1] + 1 && acc.push(i ? `, ${n}` : n),
n === a[i - 1] + 1 && n !== a[i + 1] - 1 && acc.push(`-${n}`),
acc
), [])
);