const selects = [...document.querySelectorAll('select')];
const onChange = () =>
selects.forEach(function({ value, options: [...n] }) {
n.forEach(m => m.hidden = this.includes(m.value) && value !== m.value);
}, selects.map(n => n.value));
selects.forEach(n => n.addEventListener('change', onChange));
const weights = {
j: 11,
q: 12,
k: 13,
a: 14,
};
const isStraight = hand => hand
.map(n => weights[n] ?? +n)
.sort((a, b) => a - b)
.every((n, i, a) => !i || (n - a[i - 1] === 1));
чекбокс.addEventListener('change', e => кнопка.disabled = !e.target.checked);
$('.elem_block').on('click', '.dell', function() {
$(this).closest('.block').addClass('fx_none');
$('.no-res').toggleClass('fx_none', !!$('.block:not(.fx_none)').length);
});
document.addEventListener('click', e => {
const btn = e.target.closest('.dell');
if (btn) {
btn.closest('.block').classList.add('fx_none');
document.querySelector('.no-res').classList.toggle(
'fx_none',
!!document.querySelector('.block:not(.fx_none)')
);
}
});
const controls = document.querySelectorAll('.segmented-control');
controls.forEach(n => n.addEventListener('change', updatePillPosition));
window.addEventListener('resize', () => controls.forEach(n => updatePillPosition.call(n)));
function updatePillPosition() {
const inputs = [...this.querySelectorAll('.option input')];
const x = this.offsetWidth / inputs.length * inputs.findIndex(n => n.checked);
this.querySelector('.selection').style.transform = `translateX(${x}px)`;
}
const SHOW_ON_LOAD = 3;
const SHOW_MORE = 2;
const items = [...document.querySelectorAll('.box-list__item')];
const button = document.querySelector('.show-more');
showItems(SHOW_ON_LOAD);
button.addEventListener('click', () => showItems(SHOW_MORE));
function showItems(count) {
items.splice(0, count).forEach(n => n.classList.add('ui-box-active'));
button.classList.toggle('ui-button-hidden', !items.length);
}
openItems.forEach(function (formItem) {
formItem.addEventListener('click', function () {
openBtn.innerText = this.innerText;
openList.classList.remove('open');
hiddenInput.value = this.dataset.value;
});
});
openList.addEventListener('click', function(e) {
const item = e.target.closest('li.form-item');
if (item) {
openBtn.innerText = item.innerText;
openList.classList.remove('open');
hiddenInput.value = item.dataset.value;
}
});
const newData = data.map((n, i, a) => ({
...n,
newSick: n.sick - (a[i + 1]?.sick ?? 0),
}));
data.forEach((n, i, a) => n.newSick = n.sick - (a[i + 1]?.sick ?? 0));
// или
data.reduceRight((prev, n) => (n.newSick = n.sick - prev, n.sick), 0);
let count = 0;
const countEl = document.querySelector('.text');
const buttons = [...document.querySelectorAll('.click')];
const onClick = e => updateCount(e.target.classList.toggle('clicked') ? 1 : -1);
const updateCount = change => countEl.innerText = count += change;
buttons.forEach(n => n.addEventListener('click', onClick));
updateCount(buttons.reduce((acc, n) => acc + n.classList.contains('clicked'), 0));
- document.querySelector('.calculate').addEventListener('click', function () {
+ document.querySelector('form').addEventListener('input', function () {
const result = Array
.from(letter, n => soundParts[Number.isNaN(+n) ? 'letter' : 'number'][n])
.filter(Boolean);
const result = Object
.entries(Object.assign({}, ...Object.values(soundParts)))
.reduce((acc, n) => (letter.includes(n[0]) && acc.push(n[1]), acc), []);
arr.reduce((acc, n) => (
acc.at(-1)?.[0].name === n.name || acc.push([]),
acc.at(-1).push(n),
acc
), [])
for (let i in goods) { if (discounts.length === 0) { count = goods[i].value * goods[i].amount; } for (let j in discounts) { if (goods[i].name === discounts[j].name) { count = (goods[i].value - goods[i].value * discounts[j].discount) * goods[i].amount; } else { count = goods[i].value * goods[i].amount; } } sum += count; console.log(count, goods[i].name); }
for (const n of goods) {
let s = n.value * n.amount;
for (const m of discounts) {
if (n.name === m.name) {
s *= 1 - m.discount;
break;
}
}
sum += s;
}
Возможно есть лучший способ для решения такой задачи.
function totalCost(goods, discounts) {
discounts = Object.fromEntries(discounts.map(n => [ n.name, 1 - parseFloat(n.discount) / 100 ]));
return goods.reduce((acc, n) => acc + n.value * n.amount * (discounts[n.name] ?? 1), 0);
}
Array.from(word.matchAll(/[aeiouy]/gi), n => n.index)
[...word.toLowerCase()].reduce((acc, n, i) => ('aeiouy'.includes(n) && acc.push(i), acc), [])
Object.entries(word).filter(n => 'AaEeIiOoUuYy'.indexOf(n[1]) !== -1).map(n => +n[0])
let letters = 'АаЕеIiOoUuYy' //Создал переменную со строкой с гласными
if (arg1[i] == letters[j]) { //Если элемент слова равен элементу строки с согласными newArr.push(arg1[i].indexOf()) //То пушу в массив индексы гласных этого слова }
.push(i)
.