(?<=^[/\\]*)[^/\\]+(?=[/\\]+(.*))
function sortByMatches(matchesArr, strArr) {
return strArr.filter(e => matchesArr.some(i => e.includes(i)))
.sort((a, b) => {
const countA = matchesArr.filter(i => a.includes(i)).length;
const countB = matchesArr.filter(i => b.includes(i)).length;
return countB - countA;
});
const allLinksArr = [...document.querySelectorAll('a[href]')];
//Поиск первой подходящей по тексту:
const link = allLinksArr.find(link => link.textContent.match(/*regexp*/))?.href;
//Поиск первой подходящей по URL:
const link = allLinksArr.find(link => link.href.match(/*regexp*/))?.href;
let tmp = arr[0][j][1]; arr[0][j][1] = arr[0][j][0]; arr[0][j][0] = tmp;
let tmp = arr[j][1];
arr[j][1] = arr[j][0];
arr[j][0] = tmp;
function rotXY(arr) {
return arr.map(coordinates => coordinates.reverse());
}
function getKiller(suspects, dead) {
return Object.entries(suspects).find(suspect => dead.every(d => suspect[1].includes(d)))[0];
}
('beforebegin', createAddBlock().$addBlock)
contacts: createAddBlock().$selectInput.value,
createAddBlock().$selectInput.value = '';
Это три разных вызова функции, соответственно создаются 3 разных объекта, которые не связаны друг с другом.$form.addEventListener('submit', function (event) {})
Здесь нужно искать нужный уже созданный элемент, чтобы получить его value. function findSequence(arr) {
const fistSequenceEl = arr.findLastIndex((e, i) => i === 0 || +e.value < +arr[i - 1].value);
return arr.slice(fistSequenceEl);
}
const changeColorRules = [
['синий', 'красный'],
['зеленый', 'желтый'],
['белый', 'черный'],
];
function changeWords(node, rules) {
node.textContent = rules
.reduce((str, rule) => str.replace(new RegExp(rule[0], 'gi'),
(match) => (match[0] === rule[0][0].toUpperCase()) ? rule[1][0].toUpperCase() + rule[1].slice(1) : rule[1]),
node.textContent);
}
const demoParagraph = document.querySelector('#demo');
changeWords(demoParagraph, changeColorRules);
src
у button
нужно переименовать в data-src
, чтобы получать его через dataset
.document.addEventListener('click', switchColorButtonHandler);
function switchColorButtonHandler({ target }) {
const clickedButton = target.closest('.slide-product__options');
if (!clickedButton) return;
const productWrapper = clickedButton.closest('.slide-product__image');
const productImage = productWrapper.querySelector('.picture img');
productWrapper.querySelectorAll('button').forEach(button => {
button.classList.remove('_active');
});
clickedButton.classList.add('_active');
productImage.src = clickedButton.dataset.src;
}
/^\d{1,12}$/
const input = document.querySelector('.word');
const divider = '-';
const secondDivider = '_';
const dividerRules = [
{ pattern: `[a-z0-9_-]`, replacement: divider },
{ pattern: `[\\${divider}\\${secondDivider}]+`, replacement: (match) => match[0] },
{ pattern: `^[\\${divider}\\${secondDivider}]+|[\\${divider}\\${secondDivider}]+$`, replacement: '' },
]
const valueReplacer = (input, rules) => {
rules.forEach(({ pattern, replacement }) => input.value = input.value.replace(new RegExp(pattern, 'gi'), replacement));
}
input.addEventListener('change', ({ target }) => {
valueReplacer(target, dividerRules);
});
const charDict = {
a: ['∀', '₳', 'Ä'],
b: ['Ᏸ', 'β', '฿', 'ß'],
c: ['ℭ', 'Ç', 'Ꮸ', '₡'],
d: ['Ɗ', 'Ď', 'Đ'],
e: ['£', 'Ē', 'ξ', 'Ê', 'È', '€', 'É', '∑', 'Ế', 'Ề', 'Ể', 'Ễ'],
f: ['ℱ', '₣', 'ƒ', '∮', 'Ḟ', 'ჶ'],
g: ['Ꮹ', 'Ꮆ', 'Ǥ', '₲'],
h: ['ℍ', 'ℋ', 'ℌ', 'ዙ', 'Ĥ', 'Ħ'],
i: ['ℐ', 'ℑ', 'Ï'],
j: ['ჟ', 'Ĵ'],
k: ['₭', 'Ꮶ', 'Ќ', 'Ķ', 'Ҝ', 'ﻸ'],
l: ['ℒ', 'ℓ', 'Ŀ', '£', 'λ', '₤', 'Ł', 'Ꮭ', '£', 'Ꮑ'],
m: ['ℳ', 'ʍ', 'Ḿ', '爪'],
n: ['ℕ', 'η', 'Ñ', 'Ŋ', 'Ń', 'ℵ', '₦'],
o: ['ტ', 'Ǿ', 'Θ', 'Ø', 'Ό', 'Ở', 'Ờ', 'Ớ', 'Ổ'],
p: ['ℙ', '℘', 'þ', '尸', 'Ҏ', '₱'],
q: ['ℚ', 'Q', 'Q'],
r: ['ℝ', 'ℜ', 'ℛ', '℟', 'ჩ', 'Ꮢ', '尺'],
s: ['Ꮥ', 'Ṧ', 'ى', '§', 'Ś', 'Ŝ', '₰', '∫', '$', 'ֆ'],
t: ['₸', '†', 'T', 'Ţ', 'Ŧ', 'ィ', '干', 'Ṫ', 'テ', '₮'],
u: ['∪', 'Ũ', '⋒', 'Ủ', 'Ừ', 'Ử', 'Ữ', 'Ự', 'Џ'],
v: ['∨', '√', 'Ꮙ', 'Ṽ', '/', '℣'],
w: ['₩', 'Ẃ', 'Ẁ', 'ώ', 'ω', 'Ŵ', 'Ꮤ', 'Ꮃ', 'ฬ', 'Ẅ', 'ѡ', 'Ꮚ', 'Ꮗ', 'ผ', 'ฝ', 'พ', 'ฟ'],
x: ['χ', 'ჯ', 'Ẍ', 'ẍ', 'ᶍ'],
y: ['ɣ', 'Ꭹ', 'Ꮍ', 'Ẏ', 'ẏ', 'ϒ', 'ɤ', '¥', 'り'],
z: ['ℤ', 'ℨ', 'ჳ', '乙', 'Ẑ', 'ẑ', 'ɀ', 'Ꮓ']
}
function replaceChars(str) {
return str.split('').map(char => {
char = char.toLowerCase();
return (char in charDict) ? charDict[char][Math.floor(Math.random() * charDict[char].length)] : char;
}).join('');
}
function plural(n, titles) {
return `${n} ` + titles[n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2];
}
function updateSummary(completionTimeHours) {
document.getElementById('completion-time').textContent =
completionTimeHours <= 0
? 'Invalid'
: completionTimeHours <= 24
? `${plural(completionTimeHours, ['час', 'часа', 'часов'])}`
: `${plural(Math.ceil(completionTimeHours / 24), ['день', 'дня', 'дней'])}`;
}