.hidden {
transform: scale(0);
}
.item {
transition: transform 0.5s;
}
document.querySelectorAll('.item').forEach(n => n.classList.remove('hidden'));
const groupedArr2 = arr2.reduce((acc, n) => {
(acc[n.parent_id] = acc[n.parent_id] || []).push(n);
return acc;
}, {});
arr1.forEach(n => n.arr2 = groupedArr2[n.id] || []);
const newArr1 = arr1.map(n => ({ ...n, arr2: groupedArr2[n.id] || [] }));
$('.modification').on('change', function() {
const sum = $('[type="radio"]:checked', this)
.siblings('.radio__text')
.get()
.reduce((acc, n) => acc + +$(n).text(), 0);
$('p span').text(sum);
}).trigger('change');
const container = document.querySelector('.modification');
container.addEventListener('change', e => {
const sum = Array.prototype.reduce.call(
e.currentTarget.querySelectorAll('[type="radio"]:checked'),
(acc, n) => acc + +n.closest('.radio').querySelector('.radio__text').innerText,
0
);
document.querySelector('p span').innerText = sum;
});
container.dispatchEvent(new Event('change'));
event.target
. Надо только (так как обработчик делегированный) убедиться, что событие случилось действительно на одном из интересующих вас элементов (раз это textarea, то, например, путём проверки свойства tagName
у целевого элемента). val
умеет принимать в качестве параметра не только значение, но и функцию, которая принимает текущее значение и должна вернуть новое:$(this).parent().find('input').val((i, v) => v - 1);
this.parentNode.querySelector('input').value--;
return a.width - b.width
function duplicateEncode(str) {
const arr = [...str.toLowerCase()];
const count = arr.reduce((acc, n) => (acc[n] = (acc[n] || 0) + 1, acc), {});
return arr.map(n => count[n] > 1 ? ')' : '(').join('');
}
function duplicateEncode(str) {
const arr = str.toLowerCase().split('');
const duplicates = arr.reduce((acc, n) => (acc[n] = acc.hasOwnProperty(n), acc), {});
return ''.concat(...arr.map(n => '()'[+duplicates[n]]));
}
const duplicateEncode = str => Object
.values(Object
.values(str.toLowerCase())
.reduce((acc, n, i) => ((acc[n] = acc[n] || []).push(i), acc), {}))
.reduce((acc, n) => (n.forEach(i => acc[i] = n.length > 1 ? ')' : '('), acc), [])
.join``;
const duplicateEncode = str => Array
.from(str.toLowerCase())
.reduce((acc, n, i, a) => acc + (a.indexOf(n) === a.lastIndexOf(n) ? '(' : ')'), '');
const duplicateEncode = str => str
.toLowerCase()
.replace(/./g, (m, _, s) => String.fromCharCode(40 + (s.split(m).length > 2)));
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;
<div class="xxx">hello, world!!</div>
<div class="xxx">fuck the world</div>
<div class="xxx">fuck everything</div>
.xxx {
padding: 10px;
margin: 10px;
border: 1px solid silver;
}
let el = null;
document.addEventListener('mousedown', e => el = e.target.closest('.xxx'));
document.addEventListener('mouseup', e => el = null);
document.addEventListener('mousemove', e => {
if (el) {
const height = parseInt(getComputedStyle(el).height);
el.style.height = `${height + e.movementY}px`;
}
});
const { id } = Object.values(CategoryProduct).flat().find(n => n.name === name) || {};
const selector = 'li.my_class a[href="#"]';
.document.querySelectorAll(selector).forEach(function(n) {
n.addEventListener('click', this);
}, e => e.preventDefault());
document.addEventListener('click', e => {
const link = e.target.closest(selector);
if (link) {
e.preventDefault();
}
});
Не могу понять, что в моём коде не так.
function getIndexOfWarmestDay(data){
let max = 0;
resultArr += max;
max = 0;
console.log(resultArr);
console.log
тут надо делать return
.data.map(n => Math.max(...n))
.function scrollTracking() {
const wt = $(window).scrollTop();
const wh = $(window).height();
$('#console').html($('.active').get().find(n => {
const et = $(n).offset().top;
const eh = $(n).outerHeight();
return wt > et && wt + wh - eh * 2 <= et + (wh - eh);
}) ? 'Работает' : 'Не работает');
}
[ 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
), [])
);