Изучите эти однострочники и используйте в своих проектах!
Синтаксис Javascript и встроенные методы позволяют сократить некоторый частоиспользуемый код всего до одной строчки.
Можно перевернуть строку используя методы split
, join
и reverse
.
const stringReverse = str => str.split("").reverse().join("");
stringReverse("Welcome to Javascript"); //tpircsavaJ ot emocleW
Находить среднее из массива чисел удобно при помощи метода reduce
. Вообще он очень полезен пир написании однострочных решений для многих задач, например, для нахождения суммы чисел, для нахождения максимума в массиве.
const average = arr => arr.reduce((a, b) => a + b) / arr.length;
average([21, 56, 23, 122, 67]); //57.8
const pastWeek = [...Array(7).keys()].map(days => new Date(Date.now() - 86400000 * days));
Если использовать знак плюса вместо минуса, то можно получить массив со следующими семью днями. А если нужно получать данные от определённой даты, но нужно заменить Date.now()
на неё. Обратите внимание, что здесь 86400000 - это количество миллисекунд в день.
Сначала нужно получить timestamps в миллисекундах обеих дат, вычесть одну из другой
const dayDif = (date1, date2) => Math.ceil(Math.abs(date1.getTime() - date2.getTime()) / 86400000);
dayDif(new Date("2021-09-30"), new Date("2021-11-06")); //37
Несмотря на то, что Javascript не предоставляет встроенный метод преобразования заглавных букв, написание собственного метода для преобразования строки с заглавной буквы занимает всего одну строку.
const capitalize = str => str.charAt(0).toUpperCase() + str.slice(1);
capitalize("javascript в одну строку это весело!"); //Javascript в одну строку это весело!
Наборы (Set) в Javascript могут содержать только уникальные значения любого типа. Можно это использовать для удаления повторяющихся значений в массиве. Но это работает только с массивами, хранящими примитивные данные.
const removeDuplicates = (arr) => [...new Set(arr)];
removeDuplicates([31, 56, 12, 31, 45, 12, 31]); //[ 31, 56, 12, 45 ]
Достаточно нетривиальная задача в Javascript. Но используя метод toFixed()
можно легко выполнить преобразование. Но в некоторых случаях может привести к неточности из-за работы арифметики чисел с плавающей запятой. Чтобы избежать этого неожиданного поведения в нашем коде, мы можем представить числа в экспоненциальной нотации и использовать Math.round()
для округления десятичной дроби до заданного количества десятичных знаков.
const round = (n, d) => Number(Math.round(n + "e" + d) + "e-" + d);
round(7.105, 2); //7.11
round(5.955, 2); //5.96
Эта простая функция генерирует случайный идентификатор с помощью Math.random()
. Поскольку Math.random()
не гарантирует, что все сгенерированные числа уникальны, этот метод не на 100% безопасен для использования в производственной среде. Но нет ничего плохого в том, чтобы использовать его во время разработки, чтобы быстро получить идентификатор для завершения реализации и тестирования приложения.
const randomID2 = Math.random().toString(36).substring(2); // vmij4o5nlrs
const randomID2 = Math.random().toString(36).substring(2); // 0kmbdwbqnq9
Этот метод позволяет узнать прокручена ли страница до конца вниз?
const scrolledToBottom = () => document.documentElement.clientHeight + window.scrollY >= document.documentElement.scrollHeight;
scrolledToBottom(); // false
Очень часто требуется такое поведение для многих сайтов, полезно вешать эту функцию на специальную кнопку «наверх» для сайта. Только перемещение будет мгновенное, без анимации.
const toTop = () => window.scrollTo(0, 0);
Показать или скрыть элемент можно с помощью этой одностроковой функции.
const toggle = element => element.style.display = (element.style.display === "none" ? "block" : "none");
Если нужно использовать случайный цвет для какого-нибудь элемента, то можно использовать такой код с помощью методов Math.random()
и padEnd()
.
const hexColor = () => "#" + Math.floor(Math.random() * 0xffffff).toString(16).padEnd(6, '0');
hexColor(); // '#2db8ea'
hexColor(); // '#77dede'
Чтобы удалить все куки веб-приложения нужно установить на них прошедшую дату. Если установить дату истечения куки на первую дату времени Javascript, то куки автоматически перестанут действовать.
const clearCookies = document.cookie.split(';').forEach(cookie => document.cookie = cookie.replace(/^ +/, '').replace(/=.*/, `=;expires=${ new Date(0).toUTCString()};path=/`));
const stripHtml = html => (new DOMParser().parseFromString(html, 'text/html')).body.textContent || '';
stripHtml('<h2>Heading</h2><div>Div-block <p>Paragraph</p></div>'); //'HeadingDiv-block Paragraph'
const isDarkMode = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches
Перевод статьи от Anjalee Sudasinghe