Skip to content

Instantly share code, notes, and snippets.

@kitcat-dev
Last active February 11, 2021 14:55
Show Gist options
  • Select an option

  • Save kitcat-dev/c907d17dcda93bbb2615983d70e06119 to your computer and use it in GitHub Desktop.

Select an option

Save kitcat-dev/c907d17dcda93bbb2615983d70e06119 to your computer and use it in GitHub Desktop.

Revisions

  1. kitcat-dev revised this gist Feb 11, 2021. 1 changed file with 11 additions and 16 deletions.
    27 changes: 11 additions & 16 deletions usefulFunctions.js
    Original file line number Diff line number Diff line change
    @@ -14,12 +14,7 @@ sortRandom([1, 2, 3, 4, 5]) // [1, 4, 2, 5, 3]
    const capitalize = (str) => str.charAt(0).toUpperCase() + str.slice(1)
    capitalize("hey, this is pretty cool!") // "Hey, this is pretty cool!"

    // 5. Является ли переменная массивом
    const isArray = (arr) => Array.isArray(arr)
    isArray([1, 2, 3, 4, 5]) // true
    isArray({name: 'Ted'}) // false

    // 6. Исключение hostname из URL
    // 5. Исключение hostname из URL
    const extractHostname = (url) => {
    let hostname = (url.indexOf("//") > -1) ? url.split('/')[2] : url.split('/')[0]
    hostname = hostname.split(':')[0] // Remove port number.
    @@ -28,45 +23,45 @@ const extractHostname = (url) => {
    }
    extractHostname(window.location.href) // gist.github.com

    // 7. Получение уникальных значений из массива
    // 6. Получение уникальных значений из массива
    const uniqueValues = (arr) => [...new Set(arr)]
    uniqueValues([1, 2, 3, 1, 5, 2]) // [1, 2, 3, 5]

    // 8. Проверка, соответствуют ли условию все элементы массива (или хотя бы один)
    // 7. Проверка, соответствуют ли условию все элементы массива (или хотя бы один)
    const isOldEnough = (age) => age >= 18
    const ages = [7, 19, 12, 33, 15, 49]
    ages.every(isOldEnough) // false
    ages.some(isOldEnough) // true

    // 9. Форматирование чисел с плавающей точкой в зависимости от locale
    // 8. Форматирование чисел с плавающей точкой в зависимости от locale
    const formatFloat = (floatValue, decimals) => parseFloat(floatValue.toFixed(decimals)).toLocaleString("en-US")
    formatFloat(10000.245, 2) // "10,000.25"
    formatFloat(10000.245, 0) // "10,000"

    // 10. Обновление строки запроса
    // 9. Обновление строки запроса
    const searchParams = new URLSearchParams(window.location.search)
    searchParams.set('key', 'value')
    history.replaceState(null, null, '?' + searchParams.toString())

    // 11. Разрешены только положительные числа
    // 10. Разрешены только положительные числа
    const getPositiveNumber = (number) => Math.max(number, 0)
    getPositiveNumber(-15) //0
    getPositiveNumber(15) // 15

    // 12. Копирование текста в буфер обмена
    const copyTextToClipboard = async (text) => {
    await navigator.clipboard.writeText(text)
    // 11. Копирование текста в буфер обмена
    const copyTextToClipboard = (text) => {
    return navigator.clipboard.writeText(text)
    }
    setTimeout(async () => { await copyTextToClipboard('hello world') }, 2000)

    // 13. Сведение значений элементов массива к заданному типу
    // 12. Сведение значений элементов массива к заданному типу
    const arrayToNumbers = (arr) => arr.map(Number)
    const arrayToBooleans = (arr) => arr.map(Boolean)
    arrayToNumbers(['0', '1', '2', '3']) // [0, 1, 2, 3]
    arrayToBooleans(['0', '1', '2', '3']) // [true, true, true, true]
    arrayToBooleans([0, 1, '2', '3']) // [false, true, true, true]

    // 14. Подсчет дней между двумя датами (date-fns is better)
    // 13. Подсчет дней между двумя датами (date-fns is better)
    const daysBetweenDates = (dateA, dateB) => {
    const timeDifference = Math.abs(dateA.getTime() - dateB.getTime())
    // Seconds * hours * miliseconds
  2. kitcat-dev created this gist Feb 10, 2021.
    76 changes: 76 additions & 0 deletions usefulFunctions.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,76 @@
    // 1. Генерация случайного числа в заданном диапазоне
    const randomNumberInRange = (min, max) => Math.floor(Math.random() * (max - min + 1)) + min;
    randomNumberInRange(10, 20) // 14

    // 2. Переключение логического значения
    const toggle = value => !value
    toggle(false) // true

    // 3. Сортировка элементов массива в случайном порядке (осторожно! низкий уровень случайности)
    const sortRandom = (arr) => arr.sort(() => Math.random() - 0.5)
    sortRandom([1, 2, 3, 4, 5]) // [1, 4, 2, 5, 3]

    // 4. Заглавная буква в строке
    const capitalize = (str) => str.charAt(0).toUpperCase() + str.slice(1)
    capitalize("hey, this is pretty cool!") // "Hey, this is pretty cool!"

    // 5. Является ли переменная массивом
    const isArray = (arr) => Array.isArray(arr)
    isArray([1, 2, 3, 4, 5]) // true
    isArray({name: 'Ted'}) // false

    // 6. Исключение hostname из URL
    const extractHostname = (url) => {
    let hostname = (url.indexOf("//") > -1) ? url.split('/')[2] : url.split('/')[0]
    hostname = hostname.split(':')[0] // Remove port number.
    hostname = hostname.split('?')[0] // Remove querystring.
    return hostname
    }
    extractHostname(window.location.href) // gist.github.com

    // 7. Получение уникальных значений из массива
    const uniqueValues = (arr) => [...new Set(arr)]
    uniqueValues([1, 2, 3, 1, 5, 2]) // [1, 2, 3, 5]

    // 8. Проверка, соответствуют ли условию все элементы массива (или хотя бы один)
    const isOldEnough = (age) => age >= 18
    const ages = [7, 19, 12, 33, 15, 49]
    ages.every(isOldEnough) // false
    ages.some(isOldEnough) // true

    // 9. Форматирование чисел с плавающей точкой в зависимости от locale
    const formatFloat = (floatValue, decimals) => parseFloat(floatValue.toFixed(decimals)).toLocaleString("en-US")
    formatFloat(10000.245, 2) // "10,000.25"
    formatFloat(10000.245, 0) // "10,000"

    // 10. Обновление строки запроса
    const searchParams = new URLSearchParams(window.location.search)
    searchParams.set('key', 'value')
    history.replaceState(null, null, '?' + searchParams.toString())

    // 11. Разрешены только положительные числа
    const getPositiveNumber = (number) => Math.max(number, 0)
    getPositiveNumber(-15) //0
    getPositiveNumber(15) // 15

    // 12. Копирование текста в буфер обмена
    const copyTextToClipboard = async (text) => {
    await navigator.clipboard.writeText(text)
    }
    setTimeout(async () => { await copyTextToClipboard('hello world') }, 2000)

    // 13. Сведение значений элементов массива к заданному типу
    const arrayToNumbers = (arr) => arr.map(Number)
    const arrayToBooleans = (arr) => arr.map(Boolean)
    arrayToNumbers(['0', '1', '2', '3']) // [0, 1, 2, 3]
    arrayToBooleans(['0', '1', '2', '3']) // [true, true, true, true]
    arrayToBooleans([0, 1, '2', '3']) // [false, true, true, true]

    // 14. Подсчет дней между двумя датами (date-fns is better)
    const daysBetweenDates = (dateA, dateB) => {
    const timeDifference = Math.abs(dateA.getTime() - dateB.getTime())
    // Seconds * hours * miliseconds
    return Math.floor(timeDifference / (3600 * 24 * 1000))
    }
    daysBetweenDates(new Date('2020/10/21'), new Date('2020/10/29')) // 8
    daysBetweenDates(new Date('2020/10/21'), new Date('2021/10/29')) // 373