не − каждый ‐ охотник ‑ желает - знать ꟷ где ー сидит 一 фазан
function foo(elem, eventType, selector, handler) {
elem.addEventListener(eventType, function(evt) {
if (evt.target.matches(selector)) {
handler(evt)
}
})
}
foo(document, 'click', '.element', handler)
e.target может находиться внутри требуемого элемента. К примеру, иконка внутри кнопки
evt.target.matches(selector)
заменить на evt.taget.closest(selector)
[
'firstLevel1.secondLevel1.thirdLevel1' => 'thirdLevel1 value',
'firstLevel1.secondLevel2' => 'secondLevel2 value'
]
\d{1,2}\.\d{1,2}\.\d{1,2}\s
12.07.98
includes()
и indexOf()
каждый раз, считайте, пробегают, в среднем, по полстроки.a..z
function scramble(str1, str2) {
if (str1.length < str2.length) return false;
const a = Array(26).fill(0);
for (let c of str1) a[c.charCodeAt(0) - 97]++;
for (let c of str2) a[c.charCodeAt(0) - 97]--;
for (let n of a) if (n < 0) return false;
return true;
}
* 97 это ASCII-код маленькой латинской "a"for (var i = 0; i < num.length; i++) {
function luckyTisket (num) {
let str = String(num);
let arrNums = [[], []]; // чтобы можно было arrNums[0].push и arrNums[1].push
// Если число четное...
if (Number.isInteger(str.length % 2)) {
let halfLength = str.length / 2; // присвоил halfLength значение (значение половины длины строки)
for (var i = 0; i < str.length; i++) {
if (i < halfLength) {
arrNums[0].push(str[i]); // Заполняю первый подмассив первой половиной числа
} else {
arrNums[1].push(str[i]); // Заполняю второй подмассив второй половиной числа
}
}
}
return arrNums;
}
console.log(luckyTisket(222666));
function getLucky(n = '') {
const str = String(n)
const mid = Math.ceil(str.length / 2)
return [
str.slice(0, mid).split(''),
str.slice(mid).split('')
]
}