const [ first, ...rest ] = document.querySelectorAll('[type="checkbox"]');
const onChange = () => first.checked = rest.every(n => n.checked);
first.addEventListener('change', () => rest.forEach(n => n.checked = first.checked));
rest.forEach(n => n.addEventListener('change', onChange));
let arr = str.split(' ');
'aa bb cc aa bb aa'
, разобьет на части используя пробел как разделитель. В результате получим:let arr = ['aa', 'bb', 'cc', ' aa', 'bb', 'aa']
return arr.reduce((acc, rec, index) => {
return (typeof acc[rec] !== 'undefined')
? { ...acc, [rec]: acc[rec] + 1 }
: { ...acc, [rec]: 1 }
}, {});
Рассмотрим его подробнее. Начнем с аргументов:typeof acc[rec] !== 'undefined'
проверит есть ли в объекте 'acc' ключ 'rec'.{ ...acc, [rec]: acc[rec] + 1 }
{ ...acc, [rec]: 1 }
newElement.classList.add('Class');
, где Class - имя вашего класса.var downloadButton = document.getElementById("download");
var counter = 10;
var newElement = document.createElement("div");
newElement.innerHTML = "You can download the file in 10 seconds.";
var id;
newElement.classList.add('Class');
downloadButton.parentNode.replaceChild(newElement, downloadButton);
id = setInterval(function() {
counter--;
if(counter < 0) {
newElement.parentNode.replaceChild(downloadButton, newElement);
clearInterval(id);
} else {
newElement.innerHTML = "You can download the file in " + counter.toString() + " seconds.";
}
}, 1000);
{ key: первый индекс, где встречается key }
:const keyIndex = arr.reduce((acc, n, i) => (acc[n.key] ??= i, acc), {});
id
. Можно отсортировать существующий массив:arr.sort((a, b) => (keyIndex[a.key] - keyIndex[b.key]) || (a.id - b.id));
const sorted = (arr, keys) => arr
.map(n => [ n ].concat(keys(n)))
.sort((a, b) => {
let diff = 0;
for (let i = 0; ++i < a.length && !(diff = a[i] - b[i]);) ;
return diff;
})
.map(n => n[0]);
const sortedArr = sorted(arr, n => [ keyIndex[n.key], n.id ]);
const reverse = number => +[...`${Math.abs(number)}`].reverse().join('');
function getWinner(points) {
const [ a, b ] = points.reduce((acc, n) => (
n.split('-').forEach((m, i) => acc[i] += +m),
acc
), [ 0, 0 ]);
return a === b
? undefined
: a < b ? 2 : 1;
}
const getWinner = points => [ 2, , 1 ][Math.sign(eval(points.join('+'))) + 1];
Есть ли способ это сделать без потерь в деталях?
Object.values(data.reduce((acc, n) => {
(acc[n.code] ||= {
code: n.code,
name: n.name,
variants: [],
}).variants.push(n);
return acc;
}, {}))
const seq = [1];
let upper = 0;
let lower = 0;
const dblLinear = n => {
while (n >= seq.length) {
const y = seq[lower] * 2 + 1;
const z = seq[upper] * 3 + 1;
if (y < z) {
seq.push(y);
lower += 1;
}
else {
seq.push(z);
upper += 1;
}
}
return seq[n];
}