Object.fromEntries((url.match(/(?<=utm_).+?=[^&]*/g) || []).map(n => n.split('=')))
[...url.matchAll(/utm_([^=]+)=([^&]*)/g)].reduce((acc, [ , k, v ]) => (acc[k] = v, acc), {})
Array
.from(new URL(url).searchParams)
.filter(n => n[0].startsWith('utm_'))
.reduce((acc, n) => ({ ...acc, [n[0].slice(4)]: n[1] }), {})
select.value = '0';
select.selectedIndex = 0;
true
в качестве значения свойства selected тому option'у, на который хотите переключиться:select.children[0].selected = true;
// или
select.options[0].selected = true;
// или
select.firstElementChild.selected = true;
// или
select.querySelector('[selected]').selected = true;
select.innerHTML += '';
const entries = Object.entries(obj);
const mustBeRemoved = v =>
(v instanceof Object && !Object.keys(v).length) ||
(!v && typeof v !== 'boolean');
const newObj = Object.fromEntries(entries.filter(n => !mustBeRemoved(n[1])));
entries.forEach(n => mustBeRemoved(n[1]) && delete obj[n[0]]);
const box1 = document.querySelector('.box1');
const box2 = document.querySelector('.box2');
box2.firstElementChild.insertAdjacentHTML('afterend', Array
.from(box1.children, ({ innerText: n }) => `<p><a href="#${n}">${n}</a></p>`)
.join('')
);
<div class="wrapper">
<button data-view="horizontal">Горизонтально</button>
<button data-view="vertical">Вертикально</button>
<div class="card-wrapper" data-view="horizontal">
<div class="card"></div>
<div class="card"></div>
<div class="card"></div>
<div class="card"></div>
</div>
</div>
.card-wrapper {
display: flex;
}
.card-wrapper[data-view="horizontal"] {
flex-direction: row;
}
.card-wrapper[data-view="vertical"] {
flex-direction: column;
}
document.querySelector('.wrapper').addEventListener('click', function(e) {
const view = e.target.dataset.view;
if (view && e.target.tagName === 'BUTTON') {
this.querySelector('.card-wrapper').dataset.view = view;
}
});
<div class="wrapper">
<button data-view="horizontal">Горизонтально</button>
<button data-view="vertical">Вертикально</button>
<div class="card-wrapper active" data-view="horizontal">
<div class="card"></div>
<div class="card"></div>
<div class="card"></div>
<div class="card"></div>
</div>
<div class="card-wrapper" data-view="vertical">
<div class="card"></div>
<div class="card"></div>
<div class="card"></div>
<div class="card"></div>
</div>
</div>
.card-wrapper {
display: none;
}
.card-wrapper.active {
display: flex;
}
.card-wrapper[data-view="horizontal"] {
flex-direction: row;
}
.card-wrapper[data-view="vertical"] {
flex-direction: column;
}
document.querySelector('.wrapper').addEventListener('click', function(e) {
const view = e.target.dataset.view;
if (view && e.target.tagName === 'BUTTON') {
document.querySelectorAll('.card-wrapper').forEach(n => {
n.classList.toggle('active', n.dataset.view === view);
});
}
});
data('.nights')
data('.guests')
$('div > span').click(e => e.stopPropagation());
$('div').click(function(e) {
if ($(e.target).is('span')) {
return;
}
...
});
$("#idModalEditUser").modal('show').find('.modal-body').text($(this).text());
document.querySelector('#output').innerHTML = arr.map(n => {
const columns = Object.keys(obj[n][0]);
return `
<h1>${n}</h1>
<table>
<thead>
<tr>${columns.map(n => `
<th>${n}</th>`).join('')}
</tr>
</thead>
<tbody>${obj[n].map(row => `
<tr>${columns.map(col => `
<td>${row[col]}</td>`).join('')}
</tr>`).join('')}
</tbody>
</table>`;
}).join('');
Логика такая, при клике на пункт списка, например "About" этот текст оказывался на месте текущего, а текущий в списке.
dropdown-menu-item
, например. И код в обработчик клика:const item = event.target.closest('.dropdown-menu-item');
if (item) {
const btn = item.closest('.dropdown').querySelector('.dropdown-toggle');
[ btn.textContent, item.textContent ] = [ item.textContent, btn.textContent ];
}
JSON.stringify([...this.querySelectorAll('[name]')].map(n => ({
[n.name]: n.type === 'checkbox' ? n.checked : n.value,
})))
const parseDate = str => new Date(str.split('/').reverse().join('-'));
all_orders.sort((a, b) => parseDate(a.order_date) - parseDate(b.order_date));
const sortedOrders = all_orders
.map(n => [ n, parseDate(n.order_date) ])
.sort((a, b) => a[1] - b[1])
.map(n => n[0]);
str.replace(/(?<=.{2}).(?=.{2})/g, '*')
// или
str.replace(/^(.{2})(.+)(.{2})$/, (m, g1, g2, g3) => g1 + '*'.repeat(g2.length) + g3)
// или
Array.from(str, (n, i) => (i < 2 || i > str.length - 3) ? n : '*').join('')
[...Array(12)].map((n, i) => new Date(0, i).toLocaleString('en-US', { month: 'long' }))
Object.entries(arr.reduce((acc, n) => {
const [ k, v ] = Object.entries(n)[0];
(acc[k] = acc[k] || []).push(...v);
return acc;
}, {})).map(n => Object.fromEntries([ n ]))
Пробовал ставить перед скобкой «\» не работает.