@terron/utils
v1.1.0
Published
Powerful utils for JavaScript by Terron
Downloads
1
Readme
Установка
После установки пакета (npm i @terron/utils
) достаточно включить его в ваш главный файл, и он начнёт свою работу:
require('@terron/utils')
//Ваш код далее
Описание
Данный пакет добавляет уже существующим классам JavaScript (Number, String, Array, Boolean, Object, Date) дополнительные методы, отсутсвующие изначально (либо не раскрыты), а также упрощающие некоторый другой функционал.
Что было добавлено в обновлении?
- Необязательные аргументы указаны в квадратных скобках.
- Методы для
process
. - Number:
Number.prototype.isInteger()
. - Date:
Date.prototype.format()
,Date.prototype.getQuater()
. - Object:
Object.prototype.isEmpty()
. - Array:
Array.prototype.isEmpty()
,Array.prototype.middle()
,Array.prototype.middleIndex()
.
Number
Number.random(min: integer, max: integer)
Возвращает случайное число между двумя указанными (включая их самих).
Number.random(0, 1) // 1
Number.random(20, 100) // 68
Number.randomFloat(min: integer, max: integer, [length]: integer)
Возвращает случайный флот (число с другим числом после точки) между двумя указанными (включая только минимальное), а также можно указать, сколько цифр после точки функция должна вернуть (изначально 3).
Number.randomFloat(1, 2) // 1.482
Number.randomFloat(1, 5, 2) // 4.85
Number.randomFloat(1, 50, 6) // 26.759242
Number.diff(num1: integer, num2: integer)
Сравнивает два указанных числа и возвращает их различие в числовом виде.
Number.diff(1, 2) // 1
Number.diff(2, 1) // 1
Number.diff(5, 9) // 4
Number.prototype.clamp(num1: integer, num2: integer)
Проверяет число между двумя аргументами. Если оно больше максимального, то функция вернёт второй аргумент, а если меньше минимального, то соответственно вернёт минимальное. В противном случае вернётся изначальное число.
let num = 25
num.clamp(1, 99) // 25, т.к число находится в радиусе двух указанных чисел
num.clamp(5, 20) // 20, т.к число больше второго аргумента
num.clamp(60, 80) // 60, т.к число меньше первого аргумента
Number.prototype.isOdd() / Number.prototype.isEven()
Первый метод возвращает булевое значение (true или false) в зависимости от того, является ли число нечётным.
isEven()
является обратной функцией.
let num = 10
let num2 = 17
num.isOdd() // false, т.к число чётное, а нужно, чтоб было нечётным
num.isEven() // true, т.к число чётное и соотвествует проверке в функции
num2.isOdd() // true, т.к число нечётное, что и нужно по условию функции
Number.prototype.roundTo(num: integer)
Округляет число (флот) до определённой цифры. Обратите внимание, что 0
в конце автоматически округляется и пропадает.
let num = 1.0245
num.roundTo(2) // 1.02
num.roundTo(1) // По идеи должно вернуть 1.0, но как я указал выше - ноль пропадает и вернётся просто 1
num.roundTo(9) // 1.0245 из-за условия выше, которое невозможно убрать из-за особенностей языка
Number.prototype.isPalindrome()
Проверяет, является ли число палиндромом (значение, которое в обратном порядке является таким же, что и изначальное). Не работает на слишком большие числа!
(123321).isPalindrome() // true, в обратную сторону читается также
(173).isPalindrome() // false, т.к не читается в обратную сторону также
(11).isPalindrome() // true, в обратную сторону читается также
(0).isPalindrome() // true, в обратную сторону читается также
Number.prototype.isHarshad()
Функция проверяет, делится ли число на сумму своих цифр без остатка, и возвращает соответствующий результат.
(18).isHarshad() // true, потому что 18 делится на 9 (1 + 8) без остатка
(19).isHarshad() // false, потому что 19 не делится на 10 (1 + 9) без остатка
Number.prototype.isBetween(num1: number, num2: number)
Функция проверяет, находится ли число в указаном разбросе двух чисел-аргументов.
let num = 25
num.isBetween(1, 30) // true, потому что 25 >= 1 и <= 30
num.isBetween(26, 30) // false, потому что 25 < 26
Number.prototype.isFloat()
Проверяет, является ли число флотом (число с цифрами после точки).
(13840).isFloat() // false, нет чисел после точки
(5.2).isFloat() // true, потому что есть 2 после точки
Number.prototype.isInteger()
Проверяет, является ли число интегером (число без цифр после точки).
(13840).isInteger() // true, нет чисел после точки
(5.2).isInteger() // false, потому что есть 2 после точки
Number.prototype.toOrdinal()
Возвращает порядковый номер числа (на английском языке).
(123).toOrdinal() // 123rd
(1).toOrdinal() // 1st
(56).toOrdinal() // 56th
(22).toOrdinal() // 22nd
Number.prototype.toRoman()
Возвращает число в римской системе счисления.
(5).toRoman() // V
(18).toRoman() // XVIII
Number.prototype.isPrime()
Проверяет, является ли число простым.
(3).isPrime() // true
(6).isPrime() // false
(17).isPrime() // true
Boolean
Boolean.random()
Возвращает случайное логическое значение.
Boolean.random() // true
Boolean.random() // true
Boolean.random() // false
Boolean.prototype.toNumber()
Возвращает логическое значение ввиде числа.
(true).toNumber() // 1
(false).toNumber() // 0
Boolean.prototype.or / Boolean.prototype.and(condition: boolean)
Логические операции, проверяющие условия двух булевых значений благодаря функциям (альтернатива || и &&).
let bool = 1 > 2
let bool2 = Infinity > 5
bool.or(bool2) // true, т.к bool2 является истиной
bool.and(bool2) // false, т.к bool является ложью
Date
Date.isLeapYear(year: integer)
Проверяет, является ли год високосным.
Date.isLeapYear(2024) // true
Date.isLeapYear(2022) // false
Date.prototype.isToday()
Проверяет, является ли дата сегодняшней.
let date = new Date();
date.isToday() // true
Date.prototype.addYears / Date.prototype.addMonths / Date.prototype.addWeeks / Date.prototype.addDays / Date.prototype.addHours / Date.prototype.addMinutes / Date.prototype.addSeconds(num: integer)
Добавляет к дате значение.
let date = new Date() // 10.02.2024 21:52:00
date.addYears(1) // 10.02.2025 21:52:00
date.addMonths(2) // 10.04.2024 21:52:00
date.addWeeks(1) // 17.04.2024 21:52:00
date.addDays(9) // 19.02.2024 21:52:00
date.addHours(2) // 10.02.2024 23:52:00
date.addMinutes(7) // 10.02.2024 21:59:00
date.addSeconds(57) // 10.02.2024 21:52:57
Date.prototype.daysInMonth()
Возвращает кол-во дней в месяце в текущей дате.
let date = new Date()
date.daysInMonth() // 29 (Февраль, високосный год)
date.addMonths(1).daysInMonth() // 31 (Март)
Date.prototype.format(format: string)
Возвращает дату в указанном формате.
YY - год
MM - месяц
DD - день
HH - часы
mm - минуты
SS - секунды
let date = new Date();
date.format('Год: YY, Месяц: MM') // Год: 2024, Месяц: 2
date.format(`HH:mm`) // 19:17
Date.prototype.getQuater()
Возвращает время года даты в числовом формате.
1 - зима
2 - весна
3 - лето
4 - осень
new Date().getQuater() // 1
Object
Object.prototype.random()
Возвращает случайную пару ключ-значение из объекта.
let obj = { a: 1, b: 2, c: 3 }
obj.random() // { b: 2 }
obj.random() // { c: 3 }
Object.prototype.find(condition: bool)
Адаптация функции из Array
.
let obj = { a: 1, b: 2, c: 3 }
obj.find((key, value) => key == 'a') // { a: 1 }
obj.find((key, value) => value == 3) // { c: 3 }
obj.find((key, value) => value == 38) // undefined, потому что пары по заданным условиям не обнаружено
Object.prototype.filter(condition: bool)
Адаптация функции из Array
.
let obj = { a: 1, b: 2, c: 3, d: 2 }
obj.filter((key, value) => value == 2) // { b: 2, d: 2 }
obj.filter((key, value) => key != 'c' && value == 1) // { a: 1 }
obj.filter((key, value) => key == 't') // {}, потому что пар по заданным условиям не обнаружено
Object.prototype.size()
Возвращает длину объекта.
let obj = { a: 1, b: 2, c: 3, d: 2 }
obj.size() // 4
Object.prototype.invert()
Инвертирует объект (меняет местами ключи и их значения).
let obj = { a: 1, b: 2 }
obj.invert() // { 1: 'a', 2: 'b' }
Object.prototype.copy()
Копирует объект (создаёт объект, независимый от текущего).
let obj = { a: 1, b: 3 }
let obj2 = obj
obj === obj2 // true
obj2 = obj.copy()
obj === obj2 // false
Object.prototype.pick(keys: array)
Удаляет все пары объекта, кроме тех, чьи ключи были указаны в аргументе.
let obj = { a: 1, b: 3, c: 8 }
obj.pick(['a', 'c']) // { a: 1, c: 8 }
Object.prototype.isEmpty()
Проверяет, является ли объект пустым.
{}.isEmpty() // true
{ a: 3 }.isEmpty() // false
String
String.random(length: integer, [cases]: array)
Генерирует случайные символы по заданым критериям.
String.random(5) // 5Gxju
String.random(3) // G9b
// Также у функции есть аргумент cases, в котором указываются все возможные случаи генерации.
String.random(5, cases = ['numbers', 'strings']) // 58a32
/*
numbers - разрешает генерацию с цифрами
strings - разрешает генерацию с английскими буквами
specials - разрешает генерацию со специальными символами
По умолчанию установлены все случаи
*/
String.prototype.reverse()
"Переворачивает" строку.
'Hello'.reverse() // olleH
String.prototype.isPalindrome()
Альтернатива Number.prototype.isPalindrome()
, только для строк.
'radar'.isPalindrome() // true, слово читается обраным случаем также
'development'.isPalindrome() // false, слово не читается обраным случаем также
Array
globalThis.range / Array.range(length: integer, [start]: integer)
Создёт range (массив индексов).
Array.range(5) // [ 0, 1, 2, 3, 4 ]
range(3) // [ 0, 1, 2 ]
Array.range(3, 1) // [ 1, 2, 3 ]
Array.range(3, 2) // [ 2, 3, 4 ]
globalThis.list / Array.list(...values: any)
Создаёт массив с указанными значениями.
Array.list(1, 2, 3) // [1, 2, 3]
list(true, NaN, 'hello') // [true, NaN, 'hello']
Array.prototype.radius(from: integer, to: integer)
Возвращает массив, содержащий элементы в указанном радиусе (между индексами, включая их), не изменяя его.
let fruits = ['apple', 'orange', 'lemon', 'kiwi']
let radius = fruits.radius(0, 1) // ['apple', 'orange']
let radius2 = fruits.radius(2, 3) // ['lemon', 'kiwi']
fruits.length // 4
Array.prototype.random()
Возвращает случайный элемент из массива.
let list = [1, 2, 3]
list.random() // 2
Array.prototype.diff(arr: array)
Возвращает массив из элементов, которые отсутствуют в arr
.
let numbers = [1, 2, 3, 4, 5]
let arr = [1, 2, 3]
numbers.diff(arr) // [4, 5]
// Обратите внимание, что эта операция не является обратнопропорциональной
arr.diff(numbers) // []
Array.prototype.inter(arr: array)
Возвращает массив из элементов, которые существуют в arr
.
let numbers = [1, 2, 3, 4, 5]
let arr = [1, 2, 3]
numbers.inter(arr) // [1, 2, 3]
// Обратите внимание, что эта операция является обратнопропорциональной
arr.inter(numbers) // [1, 2, 3]
Array.prototype.without(elements: array | string)
Создаёт новый массив на основе предыдущего без указаных элементов.
let array = [1, 2, 3, 4, 5]
array.without(1) // [2, 3, 4, 5]
array.without([1, 2, 3]) // [4, 5]
Array.prototype.last / Array.prototype.first()
Возвращает первый и последний элементы массива.
let fruits = ['apple', 'orange', 'lemon', 'kiwi']
fruits.first() // apple
fruits.last() // kiwi
Array.prototype.copy()
Возвращает копию массива, которая не зависит от изначального.
let arr = [1, 2, 3]
arr.copy() // [1, 2, 3]
Array.prototype.shuffle()
"Перемешивает" элементы массива. Обратите внимание, что перемешанный массив заменяет изначальный. Рекомендую использовать Array.prototype.copy()
для избежания неприятностей.
let array = [1, 2, 3, 4]
array.shuffle() // [3, 4, 1, 2]
array.last() // 2
Array.prototype.sum()
Возвращает сумму всех элементов числового массива.
let array = [1, 2, 3]
array.sum() // 6
Array.prototype.average()
Возвращает среднее значение суммы всех элементов числового массива.
let array = [1, 2, 3]
array.average() // 2
Array.prototype.unique()
Возвращает массив с уникальными значениями.
let array = [1, 2, 1, 3, 3, 1, 1, 2, 3]
array.unique() // [1, 2, 3]
Array.prototype.chunk(size: integer)
Разбивает массив на подмассивы с определённым кол-вом элементов.
let array = [1, 2, 3, 4, 5]
array.chunk(2) // [ [1, 2], [3, 4], [5] ]
Array.prototype.rotate(value: integer)
"Перемещает" массив по кругу, где положительное число - с конца в начало, а отрицательное - с начала в конец.
let array = [1, 2, 3, 4, 5]
array.rotate(1) // [5, 1, 2, 3, 4]
array.rotate(2) // [4, 5, 1, 2, 3]
array.rotate(-2) // [3, 4, 5, 1, 2]
Array.prototype.compact()
Удаляет все ложные значения с массива.
let array = [1, 2, null, 3, 0, false, NaN, undefined, 4, '', 5]
array.compact() // [1, 2, 3, 4, 5]
Array.prototype.flatten()
"выравнивает" вложенные массивы, превращая их в один плоский массив.
let array = [1, [2, 3, [4] ], [5]] // [1, 2, 3, 4, 5]
Array.prototype.zip(arr: array)
Объединяет элементы исходного массива с другим.
let array = [1, 2, 3]
let arr = ['a', 'b', 'c']
array.zip(arr) // [ [1, 'a'], [2, 'b'], [3, 'c'] ]
Array.prototype.mddile()
Возвращает средние элементы массива.
[1, 2, 3] // 2
[1, 2, 3, 4] // [2, 3]
Array.prototype.mddileIndex()
Возвращает индекы средних элементов массива.
['a', 'b', 'c'] // 1
[1, 2, 3, 4] // [1, 2]
Array.prototype.isEmpty()
Проверяет, является ли массив пустым.
[].isEmpty() // true
Array(5).isEmpty() // true
[1].isEmpty() // false
process
process.repeat(times: integer, execute: function)
Выполняет процесс определённое кол-во раз.
process.repeat(3, function () {
console.log('Hello')
}) // Три раза выведет Hello в консоль
process.repeat(3, function (index) {
console.log(index)
}) // Выведет индекс процесса по счёту (начиная с 0)
process.wait / proccess.sleep(ms: integer)
Заставляет "ждать" процесс определённое кол-во времени. (Не работает внутри process.repeat
!)
// Выполняется сразу
await wait(5000)
// Выполнится спустя 5 секунд.
wait(60000).then(function () {
// выполнится спустя минуту.
})
Мой Discord ID: 1097169235295350936