const menuSelectors = ['.cross', '.cart_popup', '.popup', '.cart_overlay', 'progress'];
const toggleMenu = (show) => {
menuSelectors.forEach((s) => document.querySelector(s).classList.toggle('active', show));
}
const showMenu = () => {
document.querySelector('.header_feedback').style.zIndex = '82';
toggleMenu(true);
};
const hideMenu = () => {
setTimeout(() => document.querySelector('.header_feedback').style.zIndex = '80', 300);
toggleMenu(false);
};
document.querySelector('.burger_block').addEventListener('click', showMenu);
document.querySelector('.cross').addEventListener('click', hideMenu);
document.querySelector('.cart_overlay').addEventListener('click', hideMenu);
.addEventListener('click', event => {
event.stopPropagation()
...
}, true);
"php.validate.executablePath": "C:\\OpenServer\\modules\\php\\PHP_7.1\\php.exe"; ^
const getMostCommonSymbol = (str) => {
const sortedSymbols = str.split('').sort().join('');
const countedSymbols = [...sortedSymbols.matchAll(/(.)\1*/g)];
return countedSymbols.reduce(
(acc, [row, symbol]) =>
acc.count < row.length ? { symbol, count: row.length } : acc,
{ symbol: null, count: 0 }
);
}
getMostCommonSymbol('asdasda')
function waitForElementAndClick(selectors, checkInterval = 100) {
return new Promise((resolve) => {
let intervalId = setInterval(() => {
if (document.querySelector(selectors) != null) {
document.querySelector(selectors).click()
clearInterval(intervalId)
resolve()
}
}, checkInterval)
});
}
1. когда уместно использовать данный язык?
2. Можно ли использовать TS без фреймов и библиотек?
3. И есть ли смысл его использовать без фреймворков?
const menuQuerySelector = (selectors) => selectors.map((s) => menuWrapper.querySelector(s));
const buttonSelectors = ['.b1', '.b2', '.b3', '.b4', ...];
const [button1, button2, button3, button4, ...] = menuQuerySelector(buttonSelectors);
{
const max1 = 9;
const max2 = 30; // max of two nums
let cur = max2 / max1;
const inc = cur;
const len = 3;
const log = (a, b) => {
console.log(b > -Infinity ? `a: ${` ${a}`.slice(-len)} | b: ${` ${b}`.slice(-len)}` : `a: ${` ${a}`.slice(-len)} |`)
}
log(0, 0);
for(let i = 1, j = 1; i < max2; i++) {
const nums = [i];
if(i >= cur) {
nums.push(j);
j++;
cur += inc;
}
log(...nums);
}
log(max2, max1);
}
const SECTIONS = [
'top',
'bottom',
'head',
'shoes',
'bag',
'accs',
];
const prepareShareItems = () => {
const { person, items } = store.getState().globals;
const result = SECTIONS.reduce((acc, section) => {
const personSection = person[section];
const { slide } = personSection;
const itemId = personSection.list[slide];
const item = items.find((item) => item.id === itemId);
acc[section] = item?.image;
return acc;
}, {});
return result;
}
const button = document.querySelector('.test')
const updateProp = () => {
const confirmResult = confirm(
'Вы действительно хотите изменить значение ключа у объекта или получить данный объект в консоль?'
);
if (!confirmResult) {
console.log('Вы отменили данное действие');
return;
}
const promptResult1 = prompt('Введите желаемый ключ');
if (!promptResult1.includes('_')) {
const promptResult2 = prompt('Введите желаемое значение');
proxy[promptResult1] = promptResult2
}
console.log(proxy[promptResult1])
}
button.addEventListener('click', updateProp)
const person = {
name: 'Maxim',
job: 'Junior Fronted-Developer',
age: 15
}
const handler = {
get(target, props) {
let arr = props.split('_').map((el) => (`${el}: ${target[el] ?? 'Такого ключа не существует'}`));
return arr.join(', ');
},
set(target, key, prop) {
if (!target[key]) {
console.log('Не верная запись');
return;
}
if (prop === null) {
console.log('Значение не указано');
return;
}
const confirmResult = confirm(
`Подтвердить изменение данного ключа (${key}) на значение ${prop}?`
)
if (!confirmResult) {
console.log('Действие отменено');
return;
}
switch (key) {
case 'age':
if (prop <= 0 || prop > 100) {
console.log(`Слишком ${prop > 100 ? 'высокий' : 'маленький'} возраст`);
return;
}
target[key] = prop;
return;
default:
target[key] = prop;
}
}
}
const proxy = new Proxy(person, handler);
interface SomeType {}
class SomeClass {
static getSymbols(): SomeType;
static getSymbols(getSymbolsOnly: true): string[];
static getSymbols(getSymbolsOnly: false): SomeType;
static getSymbols(getSymbolsOnly: boolean = false): string[] | SomeType {
if(getSymbolsOnly) {
return [];
}
return {};
}
}
const t1 = SomeClass.getSymbols(); // SomeType
const t2 = SomeClass.getSymbols(true); // string[]
const t3 = SomeClass.getSymbols(false); // SomeType
const rCount = Array.prototype.reduce.call(str, (acc, letter) => {
if (rX.includes(letter)) {
acc.X++;
} else if (rO.includes(letter)) {
acc.O++;
}
return acc;
}, { X: 0, O: 0 });
const rCount = Array.prototype.reduce.call(str.toLowerCase(), (acc, letter) => {
switch(letter) {
case 'x':
acc.X++;
break;
case 'o':
acc.O++;
break;
}
return acc;
}, { X: 0, O: 0 });