const result = tags.filter(n => active.some(m => m.name === n.name));
const result = tags.filter(function(n) {
return this.has(n.name);
}, new Set(active.map(n => n.name)));
const tagsObj = tags.reduce((acc, n) => (acc[n.name] = n, acc), {});
const result = active.reduce((acc, n) => ((n = tagsObj[n.name]) && acc.push(n), acc), []);
$('.photo-link').val(function() {
return $(this).parent().find('.ulightbox').attr('href');
});
document.querySelectorAll('.photo-link').forEach(n => {
n.value = n.parentNode.querySelector('.ulightbox').getAttribute('href');
});
$('#btn').click(function() {
i = (i + 1) % arrLatLng.length;
map.setCenter(arrLatLng[i]);
});
const containerSelector = '.info';
const buttonSelector = `${containerSelector} button`;
const props = [ 'quantity', 'square', 'floor' ];
const { elements } = document.querySelector('form');
document.addEventListener('click', ({ target: t }) => {
if (t.matches(buttonSelector)) {
props.forEach(function(n) {
elements[n].value = this.querySelector(`.${n}`).textContent;
}, t.closest(containerSelector));
}
});
const result = arr.reduce((acc, n, i) => (
acc.push(...(i & 1 ? n : [...n].reverse())),
acc
), []);
for (let i = 0; i < arr.length; ++i) {
const a = i & 1 ? arr[i] : [...arr[i]].reverse();
for (let j = 0; j < a.length; ++j) {
result.push(a[j]);
}
}
id="link"
.this
; а вместо того, чтобы выдумывать какие-то стрёмные id для блоков которые надо показать, поднимайтесь при клике до общего предка блока и кликнутого элемента, и ищите блок через querySelector
:onclick="showTooltip(this)"
function showTooltip(link) {
const div = link.parentNode.querySelector('div');
if (div.style.display === 'none') {
div.style.display = 'block';
link.style.display = 'none';
} else {
div.style.display = 'none';
}
}
document.querySelectorAll('.contacts-number a').forEach(n => {
n.addEventListener('click', onClick);
});
function onClick() {
const div = this.closest('.contacts-number').querySelector('div');
if (div.style.display === 'none') {
div.style.display = 'block';
this.style.display = 'none';
} else {
div.style.display = 'none';
}
}
пока кроме ошибок ничего не получил
document.querySelectorAll('.test').forEach(n => {
n.textContent = n.textContent.replace(/\bAenean\b/g, 'Aenean1');
});
// или
for (const n of document.getElementsByClassName('test')) {
n.innerText = n.innerText.replace(/\bAenean\b/g, '$&1');
}
<div>
<button data-step="-1">-</button>
<button data-step="+1">+</button>
</div>
<textarea cols="30" rows="10"></textarea>
const history = JSON.parse(localStorage.getItem('history')) || [];
let index = history.length - 1;
const $text = $('textarea').change(function() {
index = history.push($text.val()) - 1;
localStorage.setItem('history', JSON.stringify(history));
});
$('[data-step]').click(function() {
goTo(index + +this.dataset.step);
});
goTo(index);
function goTo(newIndex) {
if (0 <= newIndex && newIndex <= history.length - 1) {
index = newIndex;
$text.val(history[index]);
}
}
arr.map(id => people.find(n => n.id === id))
// или
arr.map(function(n) {
return this[n];
}, people.reduce((acc, n) => (acc[n.id] = n, acc), {}))
people.filter(n => arr.includes(n.id))
// или
people.filter(((ids, n) => ids.has(n.id)).bind(null, new Set(arr)))
<ul>
<li><span>aaa</span></li>
<li>
<span>bbb</span>
<ul>
<li><span>bbb.1</span></li>
<li>
<span>bbb.2</span>
<ul>
<li><span>bbb.2.1</span></li>
<li><span>bbb.2.2</span></li>
</ul>
</li>
<li>
<span>bbb.3</span>
<ul>
<li>
<span>bbb.3.1</span>
<ul>
<li><span>bbb.3.1.1</span></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
</ul>
document.querySelectorAll('li').forEach(n => {
const count = ((n.querySelector('ul') || {}).children || []).length;
n.querySelector('span').textContent += ` (${count})`;
});
document.querySelectorAll('li').forEach(n => {
const count = n.querySelectorAll('li').length;
n.querySelector('span').textContent += ` (${count})`;
});
undefined
относится к falsy значениям, так что с помощью оператора ||
подставляйте пустой объект (или какое-нибудь другое значение - смотрите сами, как вам удобнее) там, где нужное значение может отсутствовать, например:(((lead._embedded.items[0].custom_fields.find(cf => cf.id == PRODUCT_FIELD_ID) || {}).values || {})[0] || {}).value || null
lead._embedded.items[0].custom_fields.find(cf => cf.id == PRODUCT_FIELD_ID)?.values[0].value ?? null
const className = 'класс элементов';
.document.querySelectorAll(`.${className}`).forEach((n, i) => {
n.innerText = arr[i];
});
// или
const elems = document.getElementsByClassName(className);
for (let i = 0; i < elems.length; i++) {
elems[i].textContent = arr[i];
}
// или
$('.' + className).text(i => arr[i]);
$(window).scroll(function onScroll() {
if ($(this).scrollTop() > 777) {
$('.div_clone').clone().appendTo('.container2');
$(this).off('scroll', onScroll);
}
});
const isAllUnique = (...args) => new Set(args).size === args.length;
console.log(isAllUnique(69, 187, 666)); // true
console.log(isAllUnique(2, 2, 3, 4)); // false
console.log(isAllUnique(...'ABCDA')) // false