@rogolev/value 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.prettierignore +4 -0
- package/CHANGELOG.md +56 -0
- package/LICENSE +41 -0
- package/README.md +91 -0
- package/babel.config.json +20 -0
- package/docs/helpers/array.md +80 -0
- package/docs/helpers/empty.md +77 -0
- package/docs/helpers/gettype.md +69 -0
- package/docs/helpers/is_array.md +105 -0
- package/docs/helpers/is_assoc.md +59 -0
- package/docs/helpers/is_bigint.md +57 -0
- package/docs/helpers/is_bool.md +50 -0
- package/docs/helpers/is_boolean.md +50 -0
- package/docs/helpers/is_class.md +73 -0
- package/docs/helpers/is_float.md +71 -0
- package/docs/helpers/is_function.md +62 -0
- package/docs/helpers/is_infinity.md +61 -0
- package/docs/helpers/is_int.md +81 -0
- package/docs/helpers/is_integer.md +82 -0
- package/docs/helpers/is_list.md +51 -0
- package/docs/helpers/is_nan.md +59 -0
- package/docs/helpers/is_null.md +49 -0
- package/docs/helpers/is_number.md +67 -0
- package/docs/helpers/is_numeric.md +76 -0
- package/docs/helpers/is_object.md +69 -0
- package/docs/helpers/is_scalar.md +60 -0
- package/docs/helpers/is_string.md +58 -0
- package/docs/helpers/is_symbol.md +58 -0
- package/docs/helpers/is_undefined.md +56 -0
- package/docs/helpers/print.md +187 -0
- package/docs/helpers/print_type.md +225 -0
- package/docs/helpers/settype.md +78 -0
- package/docs/helpers/to_array.md +106 -0
- package/docs/helpers/to_assoc.md +91 -0
- package/docs/helpers/to_bool.md +76 -0
- package/docs/helpers/to_boolean.md +77 -0
- package/docs/helpers/to_float.md +70 -0
- package/docs/helpers/to_int.md +87 -0
- package/docs/helpers/to_integer.md +87 -0
- package/docs/helpers/to_list.md +47 -0
- package/docs/helpers/to_object.md +76 -0
- package/docs/helpers/to_string.md +134 -0
- package/docs/helpers.md +51 -0
- package/docs/types/NaN.md +30 -0
- package/docs/types/array.md +252 -0
- package/docs/types/bigint.md +34 -0
- package/docs/types/boolean.md +47 -0
- package/docs/types/class.md +36 -0
- package/docs/types/float.md +35 -0
- package/docs/types/function.md +121 -0
- package/docs/types/infinity.md +32 -0
- package/docs/types/integer.md +35 -0
- package/docs/types/null.md +23 -0
- package/docs/types/object.md +62 -0
- package/docs/types/string.md +33 -0
- package/docs/types/symbol.md +29 -0
- package/docs/types/undefined.md +25 -0
- package/docs/types.md +44 -0
- package/eslint.config.mjs +1664 -0
- package/index.mjs +37 -0
- package/jest.config.mjs +31 -0
- package/package.json +47 -0
- package/prettier.config.mjs +224 -0
- package/src/helpers/array.mjs +107 -0
- package/src/helpers/empty.mjs +70 -0
- package/src/helpers/gettype.mjs +133 -0
- package/src/helpers/is_array.mjs +128 -0
- package/src/helpers/is_assoc.mjs +51 -0
- package/src/helpers/is_bigint.mjs +47 -0
- package/src/helpers/is_bool.mjs +43 -0
- package/src/helpers/is_boolean.mjs +43 -0
- package/src/helpers/is_class.mjs +87 -0
- package/src/helpers/is_float.mjs +67 -0
- package/src/helpers/is_function.mjs +74 -0
- package/src/helpers/is_infinity.mjs +52 -0
- package/src/helpers/is_int.mjs +57 -0
- package/src/helpers/is_integer.mjs +74 -0
- package/src/helpers/is_list.mjs +43 -0
- package/src/helpers/is_nan.mjs +51 -0
- package/src/helpers/is_null.mjs +37 -0
- package/src/helpers/is_number.mjs +49 -0
- package/src/helpers/is_numeric.mjs +64 -0
- package/src/helpers/is_object.mjs +72 -0
- package/src/helpers/is_scalar.mjs +45 -0
- package/src/helpers/is_string.mjs +46 -0
- package/src/helpers/is_symbol.mjs +46 -0
- package/src/helpers/is_undefined.mjs +44 -0
- package/src/helpers/print.mjs +245 -0
- package/src/helpers/print_type.mjs +261 -0
- package/src/helpers/settype.mjs +101 -0
- package/src/helpers/to_array.mjs +118 -0
- package/src/helpers/to_assoc.mjs +98 -0
- package/src/helpers/to_bool.mjs +68 -0
- package/src/helpers/to_boolean.mjs +64 -0
- package/src/helpers/to_float.mjs +72 -0
- package/src/helpers/to_int.mjs +93 -0
- package/src/helpers/to_integer.mjs +81 -0
- package/src/helpers/to_list.mjs +56 -0
- package/src/helpers/to_object.mjs +94 -0
- package/src/helpers/to_string.mjs +157 -0
- package/tests/helpers/array.test.mjs +58 -0
- package/tests/helpers/empty.test.mjs +22 -0
- package/tests/helpers/gettype.test.mjs +74 -0
- package/tests/helpers/is_array.test.mjs +404 -0
- package/tests/helpers/is_assoc.test.mjs +42 -0
- package/tests/helpers/is_bigint.test.mjs +51 -0
- package/tests/helpers/is_bool.test.mjs +43 -0
- package/tests/helpers/is_boolean.test.mjs +43 -0
- package/tests/helpers/is_class.test.mjs +84 -0
- package/tests/helpers/is_float.test.mjs +87 -0
- package/tests/helpers/is_function.test.mjs +83 -0
- package/tests/helpers/is_infinity.test.mjs +46 -0
- package/tests/helpers/is_int.test.mjs +45 -0
- package/tests/helpers/is_integer.test.mjs +64 -0
- package/tests/helpers/is_list.test.mjs +42 -0
- package/tests/helpers/is_nan.test.mjs +43 -0
- package/tests/helpers/is_null.test.mjs +17 -0
- package/tests/helpers/is_number.test.mjs +25 -0
- package/tests/helpers/is_numeric.test.mjs +30 -0
- package/tests/helpers/is_object.test.mjs +52 -0
- package/tests/helpers/is_scalar.test.mjs +21 -0
- package/tests/helpers/is_string.test.mjs +20 -0
- package/tests/helpers/is_symbol.test.mjs +20 -0
- package/tests/helpers/is_undefined.test.mjs +18 -0
- package/tests/helpers/print.test.mjs +62 -0
- package/tests/helpers/print_type.test.mjs +62 -0
- package/tests/helpers/settype.test.mjs +34 -0
- package/tests/helpers/to_array.test.mjs +38 -0
- package/tests/helpers/to_assoc.test.mjs +33 -0
- package/tests/helpers/to_bool.test.mjs +51 -0
- package/tests/helpers/to_boolean.test.mjs +51 -0
- package/tests/helpers/to_float.test.mjs +26 -0
- package/tests/helpers/to_int.test.mjs +48 -0
- package/tests/helpers/to_integer.test.mjs +48 -0
- package/tests/helpers/to_list.test.mjs +32 -0
- package/tests/helpers/to_object.test.mjs +36 -0
- package/tests/helpers/to_string.test.mjs +71 -0
package/.prettierignore
ADDED
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# v0.0.1
|
|
2
|
+
|
|
3
|
+
## Добавлено
|
|
4
|
+
|
|
5
|
+
### Помощники для работы с типами данных
|
|
6
|
+
|
|
7
|
+
- [array](./docs/helpers/array.md) — Создаёт массив из переданных значений, обрабатывая
|
|
8
|
+
ассоциативные массивы (объекты с ключами).
|
|
9
|
+
- [empty](./docs/helpers/empty.md) — Проверяет, является ли переменная пустой.
|
|
10
|
+
- [gettype](./docs/helpers/gettype.md) — Определяет тип переданного значения.
|
|
11
|
+
- [is_array](./docs/helpers/is_array.md) — Проверяет, является ли переданное значение массивом
|
|
12
|
+
или ассоциативным массивом (объектом с ключами и значениями).
|
|
13
|
+
- [is_assoc](./docs/helpers/is_assoc.md) — Проверяет, является ли значение ассоциативным
|
|
14
|
+
массивом.
|
|
15
|
+
- [is_bigint](./docs/helpers/is_bigint.md) — Проверяет, является ли значение типом `bigint`.
|
|
16
|
+
- [is_bool](./docs/helpers/is_bool.md) — Проверяет, является ли переданное значение логическим
|
|
17
|
+
типом (`boolean`).
|
|
18
|
+
- [is_boolean](./docs/helpers/is_boolean.md) — Проверяет, является ли переданное значение
|
|
19
|
+
логическим типом (`boolean`).
|
|
20
|
+
- [is_class](./docs/helpers/is_class.md) — Проверяет, является ли переданная переменная
|
|
21
|
+
классом.
|
|
22
|
+
- [is_float](./docs/helpers/is_float.md) — Проверяет, является ли значение числом с плавающей
|
|
23
|
+
точкой.
|
|
24
|
+
- [is_function](./docs/helpers/is_function.md) — Проверяет, что значение является функцией,
|
|
25
|
+
исключая классы.
|
|
26
|
+
- [is_infinity](./docs/helpers/is_infinity.md) — Проверяет, является ли значение
|
|
27
|
+
бесконечностью (Infinity или -Infinity).
|
|
28
|
+
- [is_int](./docs/helpers/is_int.md) — Проверяет, является ли значение целым числом.
|
|
29
|
+
- [is_integer](./docs/helpers/is_integer.md) — Проверяет, является ли значение целым числом.
|
|
30
|
+
- [is_list](./docs/helpers/is_list.md) — Проверяет, является ли значение списком.
|
|
31
|
+
- [is_nan](./docs/helpers/is_nan.md) — Проверяет, является ли значение NaN.
|
|
32
|
+
- [is_null](./docs/helpers/is_null.md) — Проверяет, является ли значение `null`.
|
|
33
|
+
- [is_number](./docs/helpers/is_number.md) — Проверяет, является ли значение числом.
|
|
34
|
+
- [is_numeric](./docs/helpers/is_numeric.md) — Проверяет, является ли значение числом или
|
|
35
|
+
числовой строкой.
|
|
36
|
+
- [is_object](./docs/helpers/is_object.md) — Проверяет, является ли переданная переменная
|
|
37
|
+
объектом, созданным с использованием класса.
|
|
38
|
+
- [is_scalar](./docs/helpers/is_scalar.md) — Проверяет, является ли значение скалярным.
|
|
39
|
+
- [is_string](./docs/helpers/is_string.md) — Проверяет, является ли значение строкой.
|
|
40
|
+
- [is_symbol](./docs/helpers/is_symbol.md) — Проверяет, является ли значение символом.
|
|
41
|
+
- [is_undefined](./docs/helpers/is_undefined.md) — Проверяет, является ли значение
|
|
42
|
+
`undefined`.
|
|
43
|
+
- [print](./docs/helpers/print.md) — Преобразует значение в строку и выводит его на консоль.
|
|
44
|
+
- [print_type](./docs/helpers/print_type.md) — Преобразует значение в строку с указанием типа
|
|
45
|
+
и выводит его на консоль.
|
|
46
|
+
- [settype](./docs/helpers/settype.md) — Преобразует значение в указанный тип.
|
|
47
|
+
- [to_array](./docs/helpers/to_array.md) — Преобразует значение в массив.
|
|
48
|
+
- [to_assoc](./docs/helpers/to_assoc.md) — Преобразует значение в ассоциативный массив.
|
|
49
|
+
- [to_bool](./docs/helpers/to_bool.md) — Преобразует значение в логическое значение.
|
|
50
|
+
- [to_boolean](./docs/helpers/to_bool.md) — Преобразует значение в логическое значение.
|
|
51
|
+
- [to_float](./docs/helpers/to_float.md) — Преобразует значение в число с плавающей точкой.
|
|
52
|
+
- [to_int](./docs/helpers/to_int.md) — Преобразует значение в целое число.
|
|
53
|
+
- [to_integer](./docs/helpers/to_integer.md) — Преобразует значение в целое число.
|
|
54
|
+
- [to_list](./docs/helpers/to_list.md) — Преобразует значение в список.
|
|
55
|
+
- [to_object](./docs/helpers/to_object.md) — Преобразует значение в объект.
|
|
56
|
+
- [to_string](./docs/helpers/to_string.md) — Преобразует значение в строку.
|
package/LICENSE
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Роголев Дмитрий Александрович
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
|
|
6
|
+
associated documentation files (the "Software"), to deal in the Software without restriction,
|
|
7
|
+
including without limitation the rights to use, copy, modify, merge, publish, distribute,
|
|
8
|
+
sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
|
|
9
|
+
furnished to do so, subject to the following conditions:
|
|
10
|
+
|
|
11
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial
|
|
12
|
+
portions of the Software.
|
|
13
|
+
|
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT
|
|
15
|
+
NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
16
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES
|
|
17
|
+
OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
18
|
+
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
19
|
+
|
|
20
|
+
# Перевод
|
|
21
|
+
|
|
22
|
+
Лицензия MIT
|
|
23
|
+
|
|
24
|
+
Авторское право (c) 2025 Роголев Дмитрий Александрович
|
|
25
|
+
|
|
26
|
+
Настоящим предоставляется бесплатное разрешение любому лицу, получившему копию данного программного
|
|
27
|
+
обеспечения и сопутствующей документации (в дальнейшем "Программное обеспечение"), использовать
|
|
28
|
+
Программное обеспечение без ограничений, включая неограниченное право на использование, копирование,
|
|
29
|
+
изменение, слияние, публикацию, распространение, сублицензирование и/или продажу копий Программного
|
|
30
|
+
обеспечения, а также лицам, которым предоставляется данное Программное обеспечение, при соблюдении
|
|
31
|
+
следующих условий:
|
|
32
|
+
|
|
33
|
+
Вышеуказанное уведомление об авторских правах и данное разрешение должны быть включены во все копии
|
|
34
|
+
или значимые части данного Программного обеспечения.
|
|
35
|
+
|
|
36
|
+
ДАННОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ "КАК ЕСТЬ", БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ
|
|
37
|
+
ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ, ПРИГОДНОСТИ ДЛЯ
|
|
38
|
+
ОПРЕДЕЛЕННОЙ ЦЕЛИ И НЕНАРУШЕНИЯ ПРАВ. НИ В КОЕМ СЛУЧАЕ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ
|
|
39
|
+
ОТВЕТСТВЕННОСТИ ЗА КАКИЕ-ЛИБО ИСКИ, УЩЕРБ ИЛИ ДРУГИЕ ОБЯЗАТЕЛЬСТВА, НЕЗАВИСИМО ОТ ДЕЙСТВИЯ ДОГОВОРА,
|
|
40
|
+
ДЕЛИКТА ИЛИ ИНАЧЕ, ВОЗНИКШИЕ ИЗ, ИЛИ В СВЯЗИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ИЛИ ИНЫМИ
|
|
41
|
+
ДЕЙСТВИЯМИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ.
|
package/README.md
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# value.js
|
|
2
|
+
|
|
3
|
+
**value.js** — Библиотека для **JavaScript**, переосмысливающая типы данных и работу с ними.
|
|
4
|
+
|
|
5
|
+
## Документация
|
|
6
|
+
|
|
7
|
+
[Типы данных в value.js](./docs/types.md).
|
|
8
|
+
|
|
9
|
+
[Помощники для работы с типами данных value.js](./docs/helpers.md)
|
|
10
|
+
|
|
11
|
+
## Примеры использования
|
|
12
|
+
|
|
13
|
+
```js
|
|
14
|
+
import {
|
|
15
|
+
array,
|
|
16
|
+
is_array,
|
|
17
|
+
is_object,
|
|
18
|
+
is_class,
|
|
19
|
+
is_function,
|
|
20
|
+
is_int,
|
|
21
|
+
is_float,
|
|
22
|
+
gettype,
|
|
23
|
+
} from '@rogolev/value.js';
|
|
24
|
+
|
|
25
|
+
// Создаем ассоциативный массив - контейнер пар ключ-значение
|
|
26
|
+
const assoc = array({ key1: 'value1', key2: 'value2', key3: 'value3' });
|
|
27
|
+
|
|
28
|
+
console.log(assoc); // {key1: 'value1', key2: 'value2', key3: 'value3'}
|
|
29
|
+
|
|
30
|
+
// Ассоциативные массивы создаются с помощью конструкции Object.create(null)
|
|
31
|
+
console.log(Object.getPrototypeOf(assoc)); // null
|
|
32
|
+
|
|
33
|
+
// Функция array добавляет итератор Symbol.iterator к ассоциативным массивам
|
|
34
|
+
for (const [key, value] of assoc) {
|
|
35
|
+
console.log(key, value);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Ассоциативные массивы являются массивами
|
|
39
|
+
console.log(is_array(assoc)); // true
|
|
40
|
+
|
|
41
|
+
// Списки являются массивами
|
|
42
|
+
console.log(is_array([1, 2, 3])); // true
|
|
43
|
+
|
|
44
|
+
class stdClass {}
|
|
45
|
+
function MyFunction() {}
|
|
46
|
+
|
|
47
|
+
const object = new stdClass();
|
|
48
|
+
const objFunc = new MyFunction();
|
|
49
|
+
|
|
50
|
+
// Экземпляры классов не являются массивами
|
|
51
|
+
console.log(is_array(object)); // false
|
|
52
|
+
|
|
53
|
+
// Экземпляр класса является объектом
|
|
54
|
+
console.log(is_object(object)); // true
|
|
55
|
+
|
|
56
|
+
// Экземпляр функции не является объектом
|
|
57
|
+
console.log(is_object(objFunc)); // false
|
|
58
|
+
|
|
59
|
+
// Класс является классом
|
|
60
|
+
console.log(is_class(stdClass)); // true
|
|
61
|
+
|
|
62
|
+
// Функция не является классом
|
|
63
|
+
console.log(is_class(MyFunction)); // false
|
|
64
|
+
|
|
65
|
+
// Функция является функцией
|
|
66
|
+
console.log(is_function(MyFunction)); // true
|
|
67
|
+
|
|
68
|
+
// Класс не является функцией
|
|
69
|
+
console.log(is_function(stdClass)); // false
|
|
70
|
+
|
|
71
|
+
// Целое число
|
|
72
|
+
console.log(is_int(3)); // true
|
|
73
|
+
|
|
74
|
+
// Число с плавающей точкой
|
|
75
|
+
console.log(is_float(3.14)); // true
|
|
76
|
+
|
|
77
|
+
// Получение типа
|
|
78
|
+
console.log(gettype(stdClass)); // "class"
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Автор
|
|
82
|
+
|
|
83
|
+
Роголев Дмитрий Александрович
|
|
84
|
+
|
|
85
|
+
<drogolev@internet.ru>
|
|
86
|
+
|
|
87
|
+
<https://github.com/dmitry-rogolev>
|
|
88
|
+
|
|
89
|
+
## Лицензия
|
|
90
|
+
|
|
91
|
+
Этот проект лицензируется на условиях лицензии MIT. Подробности см. в файле [LICENSE](./LICENSE).
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"presets": [
|
|
3
|
+
[
|
|
4
|
+
"@babel/preset-env",
|
|
5
|
+
{
|
|
6
|
+
// Настройка целевых браузеров
|
|
7
|
+
"targets": "> 0.25%, not dead",
|
|
8
|
+
|
|
9
|
+
// Автоматически добавлять полифилы, где это необходимо
|
|
10
|
+
"useBuiltIns": "usage",
|
|
11
|
+
|
|
12
|
+
// Использование core-js версии 3 для полифилов
|
|
13
|
+
"corejs": 3,
|
|
14
|
+
|
|
15
|
+
// Преобразование модулей ES6 в CommonJS
|
|
16
|
+
"modules": "commonjs"
|
|
17
|
+
}
|
|
18
|
+
]
|
|
19
|
+
]
|
|
20
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
[Главная](../../README.md) / [Помощники](../helpers.md) / array
|
|
2
|
+
|
|
3
|
+
[Исходный код](../../src/helpers/array.mjs)
|
|
4
|
+
|
|
5
|
+
# array
|
|
6
|
+
|
|
7
|
+
`array` — Создаёт массив из переданных значений, обрабатывая ассоциативные массивы (объекты с
|
|
8
|
+
ключами).
|
|
9
|
+
|
|
10
|
+
## Сигнатура функции
|
|
11
|
+
|
|
12
|
+
```ts
|
|
13
|
+
function array(...values: any[]): Array<any> | Object;
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Описание
|
|
17
|
+
|
|
18
|
+
Функция принимает произвольное количество аргументов и возвращает массив, содержащий переданные
|
|
19
|
+
значения. Если среди переданных значений есть ассоциативные массивы (объекты, не являющиеся
|
|
20
|
+
массивами и с ненулевым прототипом), они преобразуются:
|
|
21
|
+
|
|
22
|
+
- Создаётся новый объект без прототипа.
|
|
23
|
+
- Добавляются все свойства исходного объекта.
|
|
24
|
+
- Добавляется итератор, позволяющий использовать объект в цикле `for-of` для получения пар
|
|
25
|
+
`[ключ, значение]`.
|
|
26
|
+
|
|
27
|
+
Если передано только одно значение, и это массив, функция возвращает его напрямую.
|
|
28
|
+
|
|
29
|
+
## Параметры
|
|
30
|
+
|
|
31
|
+
- `values` (any[])
|
|
32
|
+
|
|
33
|
+
Один или несколько элементов, которые могут быть массивами, объектами или другими значениями.
|
|
34
|
+
|
|
35
|
+
## Возвращаемое значение
|
|
36
|
+
|
|
37
|
+
Массив, содержащий переданные значения, с преобразованием ассоциативных массивов. Если передано одно
|
|
38
|
+
значение и это массив, возвращается он сам.
|
|
39
|
+
|
|
40
|
+
## Примеры использования
|
|
41
|
+
|
|
42
|
+
1. Простые массивы:
|
|
43
|
+
|
|
44
|
+
```js
|
|
45
|
+
const result = array([1, 2, 3]);
|
|
46
|
+
console.log(result); // [1, 2, 3]
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
2. Ассоциативные массивы (объекты с ключами и значениями):
|
|
50
|
+
|
|
51
|
+
```js
|
|
52
|
+
const result = array({ foo: 'bar', baz: 42 });
|
|
53
|
+
for (const [key, value] of result[0]) {
|
|
54
|
+
console.log(key, value);
|
|
55
|
+
}
|
|
56
|
+
// Вывод:
|
|
57
|
+
// foo bar
|
|
58
|
+
// baz 42
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
3. Смешанные значения:
|
|
62
|
+
|
|
63
|
+
```js
|
|
64
|
+
const result = array([1, 2, 3], { foo: 'bar' }, 'hello');
|
|
65
|
+
console.log(result);
|
|
66
|
+
// Вывод: [[1, 2, 3], { foo: 'bar' }, 'hello']
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
4. Объекты, созданные без прототипа:
|
|
70
|
+
|
|
71
|
+
```js
|
|
72
|
+
const noProtoObject = Object.create(null);
|
|
73
|
+
noProtoObject.foo = 'bar';
|
|
74
|
+
const result = array(noProtoObject);
|
|
75
|
+
for (const [key, value] of result[0]) {
|
|
76
|
+
console.log(key, value);
|
|
77
|
+
}
|
|
78
|
+
// Вывод:
|
|
79
|
+
// foo bar
|
|
80
|
+
```
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
[Главная](../../README.md) / [Помощники](../helpers.md) / empty
|
|
2
|
+
|
|
3
|
+
[Исходный код](../../src/helpers/empty.mjs)
|
|
4
|
+
|
|
5
|
+
# `empty`
|
|
6
|
+
|
|
7
|
+
`empty` — Проверяет, является ли переменная пустой.
|
|
8
|
+
|
|
9
|
+
## Сигнатура функции
|
|
10
|
+
|
|
11
|
+
```ts
|
|
12
|
+
function empty(value: any): boolean;
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Описание
|
|
16
|
+
|
|
17
|
+
Функция `empty` используется для проверки, является ли переменная пустой. Пустыми считаются значения
|
|
18
|
+
`null`, `undefined`, пустая строка, `0`, `false`, пустой массив и пустой объект (ассоциативный
|
|
19
|
+
массив).
|
|
20
|
+
|
|
21
|
+
## Параметры
|
|
22
|
+
|
|
23
|
+
- `value` (any)
|
|
24
|
+
|
|
25
|
+
Переменная, которую необходимо проверить на пустоту.
|
|
26
|
+
|
|
27
|
+
## Возвращаемое значение
|
|
28
|
+
|
|
29
|
+
Функция возвращает:
|
|
30
|
+
|
|
31
|
+
- `true`, если переменная пустая, и `false` в противном случае.
|
|
32
|
+
|
|
33
|
+
## Примеры использования
|
|
34
|
+
|
|
35
|
+
### Пример 1: Проверка пустых значений
|
|
36
|
+
|
|
37
|
+
```js
|
|
38
|
+
const result1 = empty(null);
|
|
39
|
+
// Результат: true
|
|
40
|
+
|
|
41
|
+
const result2 = empty(undefined);
|
|
42
|
+
// Результат: true
|
|
43
|
+
|
|
44
|
+
const result3 = empty('');
|
|
45
|
+
// Результат: true
|
|
46
|
+
|
|
47
|
+
const result4 = empty(0);
|
|
48
|
+
// Результат: true
|
|
49
|
+
|
|
50
|
+
const result5 = empty(false);
|
|
51
|
+
// Результат: true
|
|
52
|
+
|
|
53
|
+
const result6 = empty([]);
|
|
54
|
+
// Результат: true
|
|
55
|
+
|
|
56
|
+
const result7 = empty({});
|
|
57
|
+
// Результат: true
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Пример 2: Проверка непустых значений
|
|
61
|
+
|
|
62
|
+
```js
|
|
63
|
+
const result1 = empty('example');
|
|
64
|
+
// Результат: false
|
|
65
|
+
|
|
66
|
+
const result2 = empty(123);
|
|
67
|
+
// Результат: false
|
|
68
|
+
|
|
69
|
+
const result3 = empty(true);
|
|
70
|
+
// Результат: false
|
|
71
|
+
|
|
72
|
+
const result4 = empty([1, 2, 3]);
|
|
73
|
+
// Результат: false
|
|
74
|
+
|
|
75
|
+
const result5 = empty({ key: 'value' });
|
|
76
|
+
// Результат: false
|
|
77
|
+
```
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
[Главная](../../README.md) / [Помощники](../helpers.md) / gettype
|
|
2
|
+
|
|
3
|
+
[Исходный код](../../src/helpers/gettype.mjs)
|
|
4
|
+
|
|
5
|
+
# `gettype`
|
|
6
|
+
|
|
7
|
+
`gettype` — Определяет тип переданного значения.
|
|
8
|
+
|
|
9
|
+
## Сигнатура функции
|
|
10
|
+
|
|
11
|
+
```ts
|
|
12
|
+
function gettype(value: any): string;
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Параметры
|
|
16
|
+
|
|
17
|
+
- `value` (any)
|
|
18
|
+
|
|
19
|
+
Значение, тип которого необходимо определить.
|
|
20
|
+
|
|
21
|
+
## Описание
|
|
22
|
+
|
|
23
|
+
Функция `gettype` определяет тип переданного значения, используя различные проверки.
|
|
24
|
+
|
|
25
|
+
Она выполняет следующие проверки:
|
|
26
|
+
|
|
27
|
+
1. **Null**: Проверяет, является ли значение `null`.
|
|
28
|
+
2. **NaN**: Проверяет, является ли значение `NaN`.
|
|
29
|
+
3. **Undefined**: Проверяет, является ли значение `undefined`.
|
|
30
|
+
4. **Infinity**: Проверяет, является ли значение бесконечностью.
|
|
31
|
+
5. **Boolean**: Проверяет, является ли значение логическим.
|
|
32
|
+
6. **Integer**: Проверяет, является ли значение целым числом.
|
|
33
|
+
7. **BigInt**: Проверяет, является ли значение типом BigInt.
|
|
34
|
+
8. **Float**: Проверяет, является ли значение числом с плавающей точкой.
|
|
35
|
+
9. **String**: Проверяет, является ли значение строкой.
|
|
36
|
+
10. **Symbol**: Проверяет, является ли значение символом.
|
|
37
|
+
11. **Class**: Проверяет, является ли значение классом.
|
|
38
|
+
12. **Function**: Проверяет, является ли значение функцией.
|
|
39
|
+
13. **Array**: Проверяет, является ли значение массивом.
|
|
40
|
+
14. **Object**: Проверяет, является ли значение объектом.
|
|
41
|
+
|
|
42
|
+
Если значение не соответствует ни одному из этих типов, функция возвращает результат `typeof value`.
|
|
43
|
+
|
|
44
|
+
## Возвращаемое значение
|
|
45
|
+
|
|
46
|
+
Функция возвращает строку, представляющую тип значения.
|
|
47
|
+
|
|
48
|
+
## Примеры использования
|
|
49
|
+
|
|
50
|
+
### Пример 1: Проверка различных типов значений
|
|
51
|
+
|
|
52
|
+
```js
|
|
53
|
+
class MyClass {}
|
|
54
|
+
|
|
55
|
+
gettype(null); // "null"
|
|
56
|
+
gettype(NaN); // "NaN"
|
|
57
|
+
gettype(undefined); // "undefined"
|
|
58
|
+
gettype(Infinity); // "infinity"
|
|
59
|
+
gettype(true); // "boolean"
|
|
60
|
+
gettype(42); // "integer"
|
|
61
|
+
gettype(BigInt(123456)); // "bigint"
|
|
62
|
+
gettype(3.14); // "float"
|
|
63
|
+
gettype('hello'); // "string"
|
|
64
|
+
gettype(Symbol('symbol')); // "symbol"
|
|
65
|
+
gettype(MyClass); // "class"
|
|
66
|
+
gettype(() => {}); // "function"
|
|
67
|
+
gettype([]); // "array"
|
|
68
|
+
gettype(new MyClass()); // "object"
|
|
69
|
+
```
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
[Главная](../../README.md) / [Помощники](../helpers.md) / is_array
|
|
2
|
+
|
|
3
|
+
[Исходный код](../../src/helpers/is_array.mjs)
|
|
4
|
+
|
|
5
|
+
# is_array
|
|
6
|
+
|
|
7
|
+
`is_array` — Проверяет, является ли переданное значение массивом или ассоциативным массивом
|
|
8
|
+
(объектом с ключами и значениями).
|
|
9
|
+
|
|
10
|
+
## Сигнатура функции
|
|
11
|
+
|
|
12
|
+
```ts
|
|
13
|
+
function is_array(value: any): boolean;
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Описание
|
|
17
|
+
|
|
18
|
+
В JavaScript массивы и объекты имеют разные структуры и предназначения:
|
|
19
|
+
|
|
20
|
+
- Массивы (`Array`) являются упорядоченными коллекциями элементов, которые могут быть индексированы.
|
|
21
|
+
- Объекты (`Object`) содержат пары "ключ-значение", которые могут быть неупорядоченными.
|
|
22
|
+
|
|
23
|
+
Эта функция проверяет, является ли переданное значение обычным массивом (например, `[1, 2, 3]`),
|
|
24
|
+
либо ассоциативным массивом (объектом с парами "ключ-значение", например, `{foo: 'bar'}`).
|
|
25
|
+
|
|
26
|
+
## Алгоритм работы функции
|
|
27
|
+
|
|
28
|
+
1. Сначала проверяется, является ли переданное значение обычным массивом с помощью встроенного
|
|
29
|
+
метода `Array.isArray(value)`. Если это массив, функция сразу возвращает `true`.
|
|
30
|
+
|
|
31
|
+
2. Если переменная не является массивом, то выполняются дополнительные проверки:
|
|
32
|
+
|
|
33
|
+
- Проверяется, что значение не равно `null` (так как `null` в JavaScript также является
|
|
34
|
+
объектом, но не является ни массивом, ни объектом с парами "ключ-значение").
|
|
35
|
+
- Проверяется, что значение является объектом JavaScript (с помощью
|
|
36
|
+
`typeof value === 'object'`).
|
|
37
|
+
- Проверяется, что прототип объекта совпадает с `Object.prototype` (это объект, от которого
|
|
38
|
+
наследуются все объекты в JavaScript) или является `null` (это означает, что объект был создан
|
|
39
|
+
с помощью `Object.create(null)` и не имеет прототипа).
|
|
40
|
+
- Исключаются массивоподобные объекты (например, `arguments`, `NodeList`), путем проверки, что
|
|
41
|
+
свойство `length` не является собственным свойством объекта.
|
|
42
|
+
- Дополнительно проверяется, что объект является простым (его конструктор равен `Object`), а
|
|
43
|
+
также исключаются встроенные объекты (`Math`, `JSON`, `Reflect`, `Intl`), для которых функция
|
|
44
|
+
возвращает `true`.
|
|
45
|
+
|
|
46
|
+
## Параметры
|
|
47
|
+
|
|
48
|
+
- `value` (any)
|
|
49
|
+
|
|
50
|
+
Проверяемая переменная.
|
|
51
|
+
|
|
52
|
+
## Возвращаемое значение
|
|
53
|
+
|
|
54
|
+
Возвращает `true`, если переменная является обычным массивом (`Array`), ассоциативным массивом
|
|
55
|
+
(объектом с парами "ключ-значение"), ассоциативным массивом, созданным с помощью
|
|
56
|
+
`Object.create(null)`. В остальных случаях функция возвращает `false`.
|
|
57
|
+
|
|
58
|
+
## Примеры использования
|
|
59
|
+
|
|
60
|
+
1. Простые массивы:
|
|
61
|
+
|
|
62
|
+
```js
|
|
63
|
+
is_array([1, 2, 3]); // true
|
|
64
|
+
is_array([]); // true
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
2. Ассоциативные массивы (объекты с ключами и значениями):
|
|
68
|
+
|
|
69
|
+
```js
|
|
70
|
+
is_array({ foo: 'bar', baz: 42 }); // true
|
|
71
|
+
is_array({ 0: 'a', 1: 'b' }); // true
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
3. Объекты, созданные без прототипа:
|
|
75
|
+
|
|
76
|
+
```js
|
|
77
|
+
const noProtoObject = Object.create(null);
|
|
78
|
+
noProtoObject.foo = 'bar';
|
|
79
|
+
is_array(noProtoObject); // true
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
4. Примитивы и невалидные значения:
|
|
83
|
+
|
|
84
|
+
```js
|
|
85
|
+
is_array(null); // false
|
|
86
|
+
is_array(undefined); // false
|
|
87
|
+
is_array(42); // false
|
|
88
|
+
is_array('hello'); // false
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
5. Специальные объекты:
|
|
92
|
+
|
|
93
|
+
```js
|
|
94
|
+
is_array(new Map()); // false
|
|
95
|
+
is_array(new Set()); // false
|
|
96
|
+
is_array(() => {}); // false
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
6. Классы и их экземпляры:
|
|
100
|
+
|
|
101
|
+
```js
|
|
102
|
+
class MyClass {}
|
|
103
|
+
const instance = new MyClass();
|
|
104
|
+
is_array(instance); // false
|
|
105
|
+
```
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
[Главная](../../README.md) / [Помощники](../helpers.md) / is_assoc
|
|
2
|
+
|
|
3
|
+
[Исходный код](../../src/helpers/is_assoc.mjs)
|
|
4
|
+
|
|
5
|
+
# `is_assoc`
|
|
6
|
+
|
|
7
|
+
`is_assoc` — Проверяет, является ли значение ассоциативным массивом.
|
|
8
|
+
|
|
9
|
+
## Сигнатура функции
|
|
10
|
+
|
|
11
|
+
```ts
|
|
12
|
+
function is_assoc(value: any): boolean;
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Параметры
|
|
16
|
+
|
|
17
|
+
- `value` (any)
|
|
18
|
+
|
|
19
|
+
Значение, которое необходимо проверить на принадлежность к ассоциативному массиву.
|
|
20
|
+
|
|
21
|
+
## Описание
|
|
22
|
+
|
|
23
|
+
Функция `is_assoc` предназначена для проверки, является ли переданное значение ассоциативным
|
|
24
|
+
массивом.
|
|
25
|
+
|
|
26
|
+
Она использует метод `is_array` для проверки значения и убеждается, что значение не является обычным
|
|
27
|
+
массивом.
|
|
28
|
+
|
|
29
|
+
## Возвращаемое значение
|
|
30
|
+
|
|
31
|
+
Функция возвращает:
|
|
32
|
+
|
|
33
|
+
- `true`, если значение является ассоциативным массивом.
|
|
34
|
+
- `false` в противном случае.
|
|
35
|
+
|
|
36
|
+
## Примеры использования
|
|
37
|
+
|
|
38
|
+
### Пример 1: Проверка ассоциативных массивов
|
|
39
|
+
|
|
40
|
+
```js
|
|
41
|
+
is_assoc({ foo: 'bar' }); // true
|
|
42
|
+
is_assoc({}); // true
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Пример 2: Проверка обычных массивов
|
|
46
|
+
|
|
47
|
+
```js
|
|
48
|
+
is_assoc([]); // false
|
|
49
|
+
is_assoc([1, 2, 3]); // false
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Пример 3: Проверка значений других типов
|
|
53
|
+
|
|
54
|
+
```js
|
|
55
|
+
is_assoc('string'); // false (строка)
|
|
56
|
+
is_assoc(42); // false (число)
|
|
57
|
+
is_assoc(null); // false
|
|
58
|
+
is_assoc(undefined); // false
|
|
59
|
+
```
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
[Главная](../../README.md) / [Помощники](../helpers.md) / is_bigint
|
|
2
|
+
|
|
3
|
+
[Исходный код](../../src/helpers/is_bigint.mjs)
|
|
4
|
+
|
|
5
|
+
# `is_bigint`
|
|
6
|
+
|
|
7
|
+
`is_bigint` — Проверяет, является ли значение типом `bigint`.
|
|
8
|
+
|
|
9
|
+
## Сигнатура функции
|
|
10
|
+
|
|
11
|
+
```ts
|
|
12
|
+
function is_bigint(value: any): boolean;
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Параметры
|
|
16
|
+
|
|
17
|
+
- `value` (any)
|
|
18
|
+
|
|
19
|
+
Значение, которое необходимо проверить на принадлежность к типу `bigint`.
|
|
20
|
+
|
|
21
|
+
## Описание
|
|
22
|
+
|
|
23
|
+
Функция `is_bigint` предназначена для проверки, является ли переданное значение типом `bigint`.
|
|
24
|
+
|
|
25
|
+
Она проверяет:
|
|
26
|
+
|
|
27
|
+
1. Что значение имеет тип `bigint`.
|
|
28
|
+
|
|
29
|
+
Функция возвращает `false` для значений других типов, таких как числа, строки, объекты или массивы.
|
|
30
|
+
|
|
31
|
+
## Возвращаемое значение
|
|
32
|
+
|
|
33
|
+
Функция возвращает:
|
|
34
|
+
|
|
35
|
+
- `true`, если значение является типом `bigint`.
|
|
36
|
+
- `false` в противном случае.
|
|
37
|
+
|
|
38
|
+
## Примеры использования
|
|
39
|
+
|
|
40
|
+
### Пример 1: Проверка значений типа bigint
|
|
41
|
+
|
|
42
|
+
```js
|
|
43
|
+
is_bigint(BigInt(123456)); // true
|
|
44
|
+
is_bigint(BigInt(-123456)); // true
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Пример 2: Проверка значений других типов
|
|
48
|
+
|
|
49
|
+
```js
|
|
50
|
+
is_bigint(42); // false (число)
|
|
51
|
+
is_bigint('42'); // false (строка)
|
|
52
|
+
is_bigint(true); // false (логическое значение)
|
|
53
|
+
is_bigint(null); // false
|
|
54
|
+
is_bigint(undefined); // false
|
|
55
|
+
is_bigint({}); // false (объект)
|
|
56
|
+
is_bigint([]); // false (массив)
|
|
57
|
+
```
|