Многие из вас наверняка уже знакомы с ними. lodash/underscore был создан, чтобы предоставлять служебныефункции для общих задач в Javascript. Но некоторые вы не хотите устанавливать пакет для небольшого варианта использования.
Этот блог поможет вам сэкономить время и силы на создании служебных функций.
Создайте массив чисел от 1 до n
const range = (n) => Array.from({ length: n }, (_, i) => i + 1);
console.log(range(10));
Перетасовка массива
const shuffle = (arr) => arr.sort(() => 0.5 - Math.random());
console.log(shuffle([1, 2, 3, 4]));
// Result: [3, 2, 1, 4]
Удалить дубликаты из массива
const removeDuplicated = (arr) => [...new Set(arr)];
console.log(removeDuplicated([1, 2, 3, 3, 4, 4, 5, 5, 6]));
// Result: [ 1, 2, 3, 4, 5, 6 ]
Число четное или нет
const isEven = (num) => (num % 2 === 0);
console.log(isEven(4));
// Result: true
Найдите сумму массива
const sum = (arr) => arr.reduce((a, b) => a + b, 0);
console.log(sum([1, 2, 3, 4]));
// Result: 10
Найдите самые большие числа
const findLargest = (arr) => arr.map(subArr => Math.max(...subArr));
console.log(findLargest([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]));
// Result: [5, 27, 39, 1001]
Найдите диапазон массива
const range = (arr) => Math.max(...arr) - Math.min(...arr);
console.log(range([1, 2, 3, 4]));
// Result: 3
Обратная строка
const reverseString = (str) => str.split('').reverse().join('');
console.log(reverseString('hello'));
// Result: olleh
Создать регистр заголовка
const titleCase = (str) => str.split(' ').map(word => word[0].toUpperCase() + word.slice(1).toLowerCase()).join(' '); console.log(titleCase('the quick brown fox'));
// Result: The Quick Brown Fox
Струнный палиндром
const isPalindrome = (str) => s === s.split('').reverse().join('');
console.log(isPalindrome('madam'));
// Result: true
Скопировать в буфер обмена
const copyToClipboard = (t) => navigator.clipboard.writeText(t);
copyToClipboard("Hello World");
Найдите день недели
const getDayName = (date) => {
const days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday','Thursday', 'Friday', 'Saturday'];
return days[date.getDay()];
};
console.log(getDayName(new Date()));
// Result: Friday
Найдите день в году
const getDayOfYear = (date) => {
const firstDay = new Date(date.getFullYear(), 0, 1);
return Math.ceil((date - firstDay) / 86400000);
};
console.log(getDayOfYear(new Date()));
// Result: 182
Найдите количество секунд до полуночи
const getSecondsUntilMidnight = (date) => (24 - date.getHours()) * 60 * 60 + (60 - date.getMinutes()) * 60 + (60 - date.getSeconds());
console.log(getSecondsUntilMidnight(new Date()));
// Result: 86400
Создать случайный цвет
const getRandomColor = () => `#${Math.floor(Math.random() * 16777215).toString(16)}`;
console.log(getRandomColor());
// Result: #f0f0f0
Получить выделенный текст
const getSelectedText = () => window.getSelection().toString();
console.log(getSelectedText());
// Result: Hello World
Время выполнения вашего кода
console.time('time');
for (let i = 0; i < 1000000; i++) { // do something }
console.timeEnd('time'); // time: 0.827ms
Сопоставьте массив без использования .map()
const map = (arr, cb) => Array.from(arr, cb);
console.log(map([1, 2, 3, 4], n => n * 2)); // [2, 4, 6, 8]
Найдите пересечение двух массивов
const intersection = (arr1, arr2) => { const set = new Set(arr1); return arr2.filter((x) => set.has(x)); };
console.log(intersection([1, 2, 3], [2, 3, 4])); // [2, 3]
Удалить ложные значения из массива
const compact = (arr) => arr.filter(Boolean);
console.log(
compact([0, 1, false, 2, '', 3, 'a', 'e' * 23, NaN, 's', 34])
); // [1, 2, 3, 'a', 's', 34]
Я создал общедоступный репозиторий для других служебных функций, также не стесняйтесь вносить свой вклад в проект.
Демонстрация: https://devsmitra.github.io/javascript-quick-functions
Репозиторий: https://github.com/devsmitra/javascript-quick-functions
Есть вопросы или дополнительные? пожалуйста, оставьте комментарий.