Программистка. Читаю нон-фикшн, фотографирую на айфон, ругаюсь за феминизм. Здесь пишу как у меня дела, чтобы не забыть из чего состоят дни
Меня можно найти в твиттере и в инстаграме
Санкт-Петербург, Россия => Измир, Турция => Берлин, Германия
Список задачек, которые у меня спрашивали на фронтендерских собеседованиях в 2023 году
Классическое расплющивание массива
Массив с результатами храним в замыкании, туда записываем значения, если наше значение это другой массив, то вызываем ту же функцию рекурсивно. Есть и другие варианты этой задачи, например с указанием глубины
const arr = [1, [2, [3, [4, 5]]]]; // => [1, 2, 3, 4, 5]
export function flat(arr) {
const result = [];
function helper(a) {
for (let i of a) {
if (Array.isArray(i)) {
helper(i);
} else {
result.push(i);
}
}
}
helper(arr);
return result;
}
Если у нас есть второй аргумент, возвращаем функцию, куда передаем сумму. Если его нет, возвращаем сумму
// sum(1)(2)(3)() => 6
function sum(a) {
return function (b) {
if (!b) {
return a;
}
return sum(a + b);
};
}
Записываем скобки в словарик, итерируемся по массиву. Если попадается открывающая скобка, добавляем в стек такую же закрывающую. Если попадается закрывающая, сравниваем ее с последней скобкой в стеке. Если они не равны, возвращаем false. В конце функции длина стека должна быть равна нулю
const brackets = {
"(": ")",
"{": "}",
"[": "]",
};
function isValid(string) {
const stack = [];
for (let i of string) {
if (brackets[i]) {
stack.push(brackets[i]);
} else {
if (i !== stack.pop()) return false;
}
}
return stack.length === 0;
}
остальные посты почитать можно тут
See all tags.