Многие из вас наверняка уже знакомы с ними. 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

Есть вопросы или дополнительные? пожалуйста, оставьте комментарий.

Спасибо, что читаете 😊