document.querySelector('#abc').innerText
// Uncaught TypeError: document.querySelector(...) is null
const el = document.querySelector('#abc');
const text = el === null ? 'default Text' : el.innerText;
const text = document.querySelector('#abc')?.innerText ?? 'default Text';
const removeDuplicates = (arr) =>
arr.reduce(
(acc, cur) => (acc.includes(cur) ? acc : (acc.push(cur), acc)),
[],
);
console.log(removeDuplicates([1,2,3,4,5,1,1,2,2,3,3,65,9,65,1,5,65, 117, 117, 118,118, 12333, 12333]));
// Array(10) [ 1, 2, 3, 4, 5, 65, 9, 117, 118, 12333 ]
const modalWindow = () => {
if (e.target.classList.contains('button_openModal')) {
document.getElementById(e.target.dataset.open)?.classList.add('modal_show');
return;
}
if (e.target.classList.contains('button_closeModal')
|| e.target.closest('.modal_show') === null) {
document.querySelector('.modal_show')?.classList.remove('modal_show');
}
};
document.addEventListener(
'click',
(e) => {
const target = e.target.closest('.media-category__item');
if (!target) {
return;
}
document.querySelector('.media-category__item.active')?.classList.remove('active');
target.classList.add('active');
document.querySelector('.media-tab.active')?.classList.remove('active');
document.querySelector(`.media-tab[data-tab="${target.dataset.category}"]`)?.classList.add('active');
},
);
<page-following>
<page-header
title="Following"
:buttons="buttons"
@buttonPressed="onButtonPressed"
/>
<!-- здесь контент -->
<page-footer />
</page-following>
const parseDate = (date) => Date.parse(date.split('/').reverse().join('-'));
const findClosest = (list, date = (new Date()).toLocaleDateString('en-GB')) => {
const findDate = parseDate(date);
return list.reduce(
(acc, cur) => {
const delta = parseDate(cur.date) - findDate;
return (delta >= 0 && delta < acc.delta) ? { delta, el: cur } : acc;
},
{ delta: Number.MAX_SAFE_INTEGER, el: null },
).el;
};
deepEqual({a: 1}, {b: 1}); // true
deepEqual(null, {b: 1}); // 1
deepEqual({a: 1, b: 2}, {b: 2, a: 1}); // false
const deepEqual = (a, b) => {
if (a === b) {
return true;
}
if (a === null || b === null || typeof a !== 'object' || typeof b !== 'object') {
return false;
}
const aKeys = Object.keys(a);
const bKeys = Object.keys(b);
if (aKeys.length !== bKeys.length) {
return false;
}
for (let i = 0; i < aKeys.length; i += 1) {
const key = aKeys[i];
if (!bKeys.includes(key) || !deepEqual(a[key], b[key])) {
return false;
}
}
return true;
};