sortByPrices
и sortByDuration
? Дайте-ка попробую угадать - принимают в качестве параметра массив, и его же сортируют. Если так, то ответ на вопрос "куда копать" очевиден - копайте основы js, какие бывают типы данных, в чём их особенности. Массивы являются объектами, а объекты при присваивании / передаче в функцию / возврате из функции не копируются, копируются ссылки на них. То есть, несколько раз сортируется один и тот же массив - естественно, что при выводе всегда будет отображаться результат последней сортировки. Делайте копии массива, сортируйте копии, передавайте эти копии в экземпляры TicketsList
, типа tickets={sortByPrices([...visibleData])}
. sum(int(n[2:]) for n in arr)
.sum(int(re.sub(r'\D', '', n)) for n in arr)
. $color = preg_match('~^цвет (.+)~ui', $str, $match) ? $match[1] : null;
v-model
игнорирует начальное значение атрибутовvalue
,checked
илиselected
на любых элементах форм.
$chunks = array_chunk($arr, 2);
$newArr = array_combine(array_column($chunks, 0), array_column($chunks, 1));
for ($i = 0; $i < count($arr); $i += 2) {
$newArr[$arr[$i]] = $arr[$i + 1];
}
$('form').on('input', function() {
$('#submit-about').prop('disabled', ![
$('#name-about').val().length !== 0,
$('#phone-about').val().length === 16,
$('#personaldata-about').prop('checked'),
].every(Boolean));
});
function printInc(a: string | number): void {
switch (typeof a) {
case 'string':
console.log(a + ' plus one');
break;
case 'number':
console.log(a + 1);
break;
}
}
Насколько он сложен вообще?
Много ли отличии?
.dropdown {
display: none;
}
.dropdown.show {
display: block;
}
const headerSelector = '.tabs__head';
const contentSelector = '.dropdown';
const activeClass = 'show';
// делегирование, назначаем обработчик клика один раз для всех хедеров;
// контент, соответствующий нажатому хедеру, находим через значение атрибута href
document.addEventListener('click', ({ target: t }) => {
const header = t.closest(headerSelector);
if (header) {
document.querySelectorAll(contentSelector).forEach(function(n, i) {
n.classList[n === this ? 'toggle' : 'remove'](activeClass);
}, document.querySelector(header.attributes.href.value));
}
});
// или, назначаем обработчик клика каждому хедеру индивидуально;
// контент, соответствующий нажатому хедеру, определяем по равенству индексов
const headers = document.querySelectorAll(headerSelector);
const contents = document.querySelectorAll(contentSelector);
headers.forEach(n => n.addEventListener('click', onClick));
function onClick() {
const index = Array.prototype.indexOf.call(headers, this);
contents.forEach((n, i) => n.classList[i === index ? 'toggle' : 'remove'](activeClass));
}
DG.then
.