ts
транспилировать, если прикрутить соотв. примочку. Например, про WebPack в документации TypeScript, или про TypeScript в конфигурации Vite (умеет из коробки). const foo = function(arg) {
return arg > 2;
}
function mapper(array, func) {
return array.map(func);
}
mapper([1, 2, 3], foo);
(arg) => arg > 2;
почти то же самое, что определение функции foo()
выше. .then(onFulfilled, onRejected)
вторая функция «ловит» ошибку и обрабатывает её, поэтому выполнение не прерывается..catch()
в конце цепочки.// ...
, function(reason) {
console.log(reason); // Ошибка! (Тут Скрипт должен прервать дальнейшее выполнение!)
return Promise.reject(reason); // передаём пас с ошибкой дальше по цепочке
})
и всё равно добавьте в конце блок .catch()
function test() {
// ...
}
const code = test.toString(); // код функции
// TODO: убрать всё снаружи if { }
code.match(/count/g).length // сколько раз используется
let count
применить defineProperty
, где в своих getter и setter считать обращения. Object.fromEntries(Object.entries(arr.reduce((acc, c) => (acc[c] = (acc[c] ?? 0) + 1, acc), {})).filter((pair) => pair[1] > 2)
вернёт объект {значение: счётчик}
из элементов, которых «больше 2 шт». Для примера в вопросе вернёт {1: 3}
, т.е. «единиц — было три»reduce()
'ом проходим по массиву, собирая словарь, где ключи – уникальные значения из массива, а значения – счётчики, сколько раз каждое встретилось.[ключ, значение]
; фильтруем, оставляя только те, где значение > 2, и снова собираем в объект.\D
("a2-9f-gg-7232").replace(/\D/g, "")
// "297232"
В браузере — работает.\D
обозначает «всё, кроме цифр»\d
, для сравнения, как раз означает любую цифруg
флаг от слова global, искать не до первого совпадения, а по всей строке.map()
возвращает новый массив. arr = arr.map( ... )
И почему нельзя использовать {age}
?
map()
заменяет элемент массива на возвращаемое значение. Что вернули, то будет в новом массиве лежать. Взяли объект, вернули только поле возраста, удвоенное. Т.е. получили массив удвоенных возрастов, а имена потерялись.