@rogolev/value 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (203) hide show
  1. package/CHANGELOG.md +142 -1
  2. package/docs/helpers/array/array_chunk.md +80 -0
  3. package/docs/helpers/array/array_chunk_with_keys.md +81 -0
  4. package/docs/helpers/array/array_column.md +110 -0
  5. package/docs/helpers/array/array_combine.md +77 -0
  6. package/docs/helpers/array/array_count_values.md +71 -0
  7. package/docs/helpers/array/array_diff.md +97 -0
  8. package/docs/helpers/array/array_diff_assoc.md +81 -0
  9. package/docs/helpers/array/array_diff_key.md +81 -0
  10. package/docs/helpers/array/array_diff_uassoc.md +101 -0
  11. package/docs/helpers/array/array_diff_ukey.md +101 -0
  12. package/docs/helpers/array/array_fill.md +81 -0
  13. package/docs/helpers/array/array_fill_keys.md +73 -0
  14. package/docs/helpers/array/array_filter.md +79 -0
  15. package/docs/helpers/array/array_flip.md +70 -0
  16. package/docs/helpers/array/array_index_max.md +78 -0
  17. package/docs/helpers/array/array_index_min.md +78 -0
  18. package/docs/helpers/array/array_intersect.md +91 -0
  19. package/docs/helpers/array/array_intersect_assoc.md +91 -0
  20. package/docs/helpers/array/array_intersect_key.md +91 -0
  21. package/docs/helpers/array/array_intersect_uassoc.md +101 -0
  22. package/docs/helpers/array/array_intersect_ukey.md +101 -0
  23. package/docs/helpers/array/array_key_exists.md +73 -0
  24. package/docs/helpers/array/array_key_first.md +62 -0
  25. package/docs/helpers/array/array_key_last.md +62 -0
  26. package/docs/helpers/array/array_key_to_lower_case.md +57 -0
  27. package/docs/helpers/array/array_key_to_upper_case.md +57 -0
  28. package/docs/helpers/array/array_keys.md +62 -0
  29. package/docs/helpers/array/array_map.md +69 -0
  30. package/docs/helpers/array/array_merge.md +67 -0
  31. package/docs/helpers/array/array_merge_recursive.md +86 -0
  32. package/docs/helpers/array/array_pad.md +83 -0
  33. package/docs/helpers/array/array_pop.md +64 -0
  34. package/docs/helpers/array/array_product.md +62 -0
  35. package/docs/helpers/array/array_push.md +57 -0
  36. package/docs/helpers/array/array_rand.md +99 -0
  37. package/docs/helpers/array/array_reduce.md +77 -0
  38. package/docs/helpers/array/array_replace.md +85 -0
  39. package/docs/helpers/array/array_replace_recursive.md +87 -0
  40. package/docs/helpers/array/array_reverse.md +55 -0
  41. package/docs/helpers/array/array_search.md +74 -0
  42. package/docs/helpers/array/array_shift.md +64 -0
  43. package/docs/helpers/array/array_slice.md +65 -0
  44. package/docs/helpers/array/array_splice.md +103 -0
  45. package/docs/helpers/array/array_sum.md +55 -0
  46. package/docs/helpers/array/array_udiff.md +97 -0
  47. package/docs/helpers/array/array_udiff_assoc.md +101 -0
  48. package/docs/helpers/array/array_udiff_uassoc.md +88 -0
  49. package/docs/helpers/array/array_uintersect.md +101 -0
  50. package/docs/helpers/array/array_uintersect_assoc.md +102 -0
  51. package/docs/helpers/array/array_uintersect_uassoc.md +135 -0
  52. package/docs/helpers/array/array_unique.md +54 -0
  53. package/docs/helpers/array/array_unshift.md +58 -0
  54. package/docs/helpers/array/array_values.md +54 -0
  55. package/docs/helpers/array/array_walk.md +87 -0
  56. package/docs/helpers/array/array_walk_recursive.md +93 -0
  57. package/docs/helpers/array/count.md +54 -0
  58. package/docs/helpers/array/in_array.md +65 -0
  59. package/docs/helpers/array/natsort.md +60 -0
  60. package/docs/helpers/array/range.md +76 -0
  61. package/docs/helpers/array/shuffle.md +74 -0
  62. package/docs/helpers/array/sort.md +79 -0
  63. package/docs/helpers/is_char.md +84 -0
  64. package/docs/helpers/string/is_digit_char.md +70 -0
  65. package/docs/helpers/string/is_whitespace_char.md +70 -0
  66. package/docs/helpers/string/natcompare.md +69 -0
  67. package/docs/helpers/string/natcompare_numeric.md +70 -0
  68. package/docs/helpers.md +125 -1
  69. package/index.mjs +66 -1
  70. package/package.json +2 -1
  71. package/prettier.config.mjs +2 -1
  72. package/src/helpers/array/array_chunk.mjs +102 -0
  73. package/src/helpers/array/array_chunk_with_keys.mjs +102 -0
  74. package/src/helpers/array/array_column.mjs +131 -0
  75. package/src/helpers/array/array_combine.mjs +26 -0
  76. package/src/helpers/array/array_count_values.mjs +82 -0
  77. package/src/helpers/array/array_diff.mjs +77 -0
  78. package/src/helpers/array/array_diff_assoc.mjs +56 -0
  79. package/src/helpers/array/array_diff_key.mjs +56 -0
  80. package/src/helpers/array/array_diff_uassoc.mjs +76 -0
  81. package/src/helpers/array/array_diff_ukey.mjs +71 -0
  82. package/src/helpers/array/array_fill.mjs +108 -0
  83. package/src/helpers/array/array_fill_keys.mjs +90 -0
  84. package/src/helpers/array/array_filter.mjs +105 -0
  85. package/src/helpers/array/array_flip.mjs +58 -0
  86. package/src/helpers/array/array_index_max.mjs +82 -0
  87. package/src/helpers/array/array_index_min.mjs +82 -0
  88. package/src/helpers/array/array_intersect.mjs +71 -0
  89. package/src/helpers/array/array_intersect_assoc.mjs +67 -0
  90. package/src/helpers/array/array_intersect_key.mjs +67 -0
  91. package/src/helpers/array/array_intersect_uassoc.mjs +77 -0
  92. package/src/helpers/array/array_intersect_ukey.mjs +72 -0
  93. package/src/helpers/array/array_key_exists.mjs +83 -0
  94. package/src/helpers/array/array_key_first.mjs +73 -0
  95. package/src/helpers/array/array_key_last.mjs +74 -0
  96. package/src/helpers/array/array_key_to_lower_case.mjs +71 -0
  97. package/src/helpers/array/array_key_to_upper_case.mjs +71 -0
  98. package/src/helpers/array/array_keys.mjs +65 -0
  99. package/src/helpers/array/array_map.mjs +84 -0
  100. package/src/helpers/array/array_merge.mjs +95 -0
  101. package/src/helpers/array/array_merge_recursive.mjs +153 -0
  102. package/src/helpers/array/array_pad.mjs +105 -0
  103. package/src/helpers/array/array_pop.mjs +82 -0
  104. package/src/helpers/array/array_product.mjs +67 -0
  105. package/src/helpers/array/array_push.mjs +75 -0
  106. package/src/helpers/array/array_rand.mjs +129 -0
  107. package/src/helpers/array/array_reduce.mjs +90 -0
  108. package/src/helpers/array/array_replace.mjs +25 -0
  109. package/src/helpers/array/array_replace_recursive.mjs +109 -0
  110. package/src/helpers/array/array_reverse.mjs +62 -0
  111. package/src/helpers/array/array_search.mjs +104 -0
  112. package/src/helpers/array/array_shift.mjs +78 -0
  113. package/src/helpers/array/array_slice.mjs +99 -0
  114. package/src/helpers/array/array_splice.mjs +218 -0
  115. package/src/helpers/array/array_sum.mjs +60 -0
  116. package/src/helpers/array/array_udiff.mjs +91 -0
  117. package/src/helpers/array/array_udiff_assoc.mjs +71 -0
  118. package/src/helpers/array/array_udiff_uassoc.mjs +124 -0
  119. package/src/helpers/array/array_uintersect.mjs +72 -0
  120. package/src/helpers/array/array_uintersect_assoc.mjs +77 -0
  121. package/src/helpers/array/array_uintersect_uassoc.mjs +121 -0
  122. package/src/helpers/array/array_unique.mjs +77 -0
  123. package/src/helpers/array/array_unshift.mjs +64 -0
  124. package/src/helpers/array/array_values.mjs +57 -0
  125. package/src/helpers/array/array_walk.mjs +95 -0
  126. package/src/helpers/array/array_walk_recursive.mjs +104 -0
  127. package/src/helpers/array/count.mjs +57 -0
  128. package/src/helpers/array/in_array.mjs +67 -0
  129. package/src/helpers/array/natsort.mjs +62 -0
  130. package/src/helpers/array/range.mjs +121 -0
  131. package/src/helpers/array/shuffle.mjs +73 -0
  132. package/src/helpers/array/sort.mjs +69 -0
  133. package/src/helpers/is_char.mjs +54 -0
  134. package/src/helpers/string/is_digit_char.mjs +60 -0
  135. package/src/helpers/string/is_whitespace_char.mjs +54 -0
  136. package/src/helpers/string/natcompare.mjs +107 -0
  137. package/src/helpers/string/natcompare_numeric.mjs +131 -0
  138. package/tests/helpers/array/array_chunk.test.mjs +49 -0
  139. package/tests/helpers/array/array_chunk_with_keys.test.mjs +45 -0
  140. package/tests/helpers/array/array_column.test.mjs +87 -0
  141. package/tests/helpers/array/array_combine.test.mjs +41 -0
  142. package/tests/helpers/array/array_count_values.test.mjs +40 -0
  143. package/tests/helpers/array/array_diff.test.mjs +78 -0
  144. package/tests/helpers/array/array_diff_assoc.test.mjs +64 -0
  145. package/tests/helpers/array/array_diff_key.test.mjs +64 -0
  146. package/tests/helpers/array/array_diff_uassoc.test.mjs +73 -0
  147. package/tests/helpers/array/array_diff_ukey.test.mjs +77 -0
  148. package/tests/helpers/array/array_fill.test.mjs +47 -0
  149. package/tests/helpers/array/array_fill_keys.test.mjs +35 -0
  150. package/tests/helpers/array/array_filter.test.mjs +38 -0
  151. package/tests/helpers/array/array_flip.test.mjs +33 -0
  152. package/tests/helpers/array/array_index_max.test.mjs +41 -0
  153. package/tests/helpers/array/array_index_min.test.mjs +41 -0
  154. package/tests/helpers/array/array_intersect.test.mjs +65 -0
  155. package/tests/helpers/array/array_intersect_assoc.test.mjs +65 -0
  156. package/tests/helpers/array/array_intersect_key.test.mjs +65 -0
  157. package/tests/helpers/array/array_intersect_uassoc.test.mjs +76 -0
  158. package/tests/helpers/array/array_intersect_ukey.test.mjs +74 -0
  159. package/tests/helpers/array/array_key_exists.test.mjs +36 -0
  160. package/tests/helpers/array/array_key_first.test.mjs +29 -0
  161. package/tests/helpers/array/array_key_last.test.mjs +29 -0
  162. package/tests/helpers/array/array_key_to_lower_case.test.mjs +23 -0
  163. package/tests/helpers/array/array_key_to_upper_case.test.mjs +23 -0
  164. package/tests/helpers/array/array_keys.test.mjs +27 -0
  165. package/tests/helpers/array/array_map.test.mjs +32 -0
  166. package/tests/helpers/array/array_merge.test.mjs +37 -0
  167. package/tests/helpers/array/array_merge_recursive.test.mjs +65 -0
  168. package/tests/helpers/array/array_pad.test.mjs +48 -0
  169. package/tests/helpers/array/array_pop.test.mjs +29 -0
  170. package/tests/helpers/array/array_product.test.mjs +33 -0
  171. package/tests/helpers/array/array_push.test.mjs +31 -0
  172. package/tests/helpers/array/array_rand.test.mjs +59 -0
  173. package/tests/helpers/array/array_reduce.test.mjs +44 -0
  174. package/tests/helpers/array/array_replace.test.mjs +46 -0
  175. package/tests/helpers/array/array_replace_recursive.test.mjs +46 -0
  176. package/tests/helpers/array/array_reverse.test.mjs +31 -0
  177. package/tests/helpers/array/array_search.test.mjs +48 -0
  178. package/tests/helpers/array/array_shift.test.mjs +29 -0
  179. package/tests/helpers/array/array_slice.test.mjs +49 -0
  180. package/tests/helpers/array/array_splice.test.mjs +67 -0
  181. package/tests/helpers/array/array_sum.test.mjs +27 -0
  182. package/tests/helpers/array/array_udiff.test.mjs +95 -0
  183. package/tests/helpers/array/array_udiff_assoc.test.mjs +77 -0
  184. package/tests/helpers/array/array_udiff_uassoc.test.mjs +89 -0
  185. package/tests/helpers/array/array_uintersect.test.mjs +78 -0
  186. package/tests/helpers/array/array_uintersect_assoc.test.mjs +80 -0
  187. package/tests/helpers/array/array_uintersect_uassoc.test.mjs +122 -0
  188. package/tests/helpers/array/array_unique.test.mjs +27 -0
  189. package/tests/helpers/array/array_unshift.test.mjs +31 -0
  190. package/tests/helpers/array/array_values.test.mjs +27 -0
  191. package/tests/helpers/array/array_walk.test.mjs +48 -0
  192. package/tests/helpers/array/array_walk_recursive.test.mjs +53 -0
  193. package/tests/helpers/array/count.test.mjs +27 -0
  194. package/tests/helpers/array/in_array.test.mjs +52 -0
  195. package/tests/helpers/array/natsort.test.mjs +71 -0
  196. package/tests/helpers/array/range.test.mjs +51 -0
  197. package/tests/helpers/array/shuffle.test.mjs +42 -0
  198. package/tests/helpers/array/sort.test.mjs +60 -0
  199. package/tests/helpers/is_char.test.mjs +40 -0
  200. package/tests/helpers/string/is_digit_char.test.mjs +32 -0
  201. package/tests/helpers/string/is_whitespace_char.test.mjs +32 -0
  202. package/tests/helpers/string/natcompare.test.mjs +100 -0
  203. package/tests/helpers/string/natcompare_numeric.test.mjs +110 -0
@@ -0,0 +1,70 @@
1
+ [Главная](../../../README.md) / [Помощники](../../helpers.md) / natcompare_numeric
2
+
3
+ [Исходный код](../../../src/helpers/string/natcompare_numeric.mjs)
4
+
5
+ # natcompare_numeric
6
+
7
+ `natcompare_numeric` — Сравнивает две строки, содержащие числовые значения, в естественном
8
+ порядке.
9
+
10
+ ## Сигнатура функции
11
+
12
+ ```ts
13
+ function natcompare_numeric(a: string, b: string): number;
14
+ ```
15
+
16
+ ## Описание
17
+
18
+ Функция `natcompare_numeric` используется для сравнения двух строк, содержащих числовые значения, в
19
+ естественном порядке. Она поддерживает строки с ведущими нулями и игнорирует их при сравнении.
20
+
21
+ ## Параметры
22
+
23
+ - `a` (string): Первая строка для сравнения.
24
+ - `b` (string): Вторая строка для сравнения.
25
+
26
+ ## Возвращаемое значение
27
+
28
+ Возвращает отрицательное значение, если `a` меньше `b`, ноль, если `a` равно `b`, и положительное
29
+ значение, если `a` больше `b`.
30
+
31
+ ## Примеры использования
32
+
33
+ 1. Сравнение строк с числовыми значениями:
34
+
35
+ ```js
36
+ const result = natcompare_numeric('10', '2');
37
+ console.log(result); // 1
38
+ ```
39
+
40
+ 2. Сравнение строк с ведущими нулями:
41
+
42
+ ```js
43
+ const result = natcompare_numeric('0010', '10');
44
+ console.log(result); // 0
45
+ ```
46
+
47
+ 3. Сравнение строк с пробелами:
48
+
49
+ ```js
50
+ const result = natcompare_numeric(' 10', '10');
51
+ console.log(result); // 0
52
+ ```
53
+
54
+ 4. Сравнение строк с буквами и числами:
55
+
56
+ ```js
57
+ const result = natcompare_numeric('a10', 'a2');
58
+ console.log(result); // 1
59
+ ```
60
+
61
+ 5. Сравнение строк с разными символами:
62
+
63
+ ```js
64
+ const result = natcompare_numeric('10-', '10+');
65
+ console.log(result); // 0
66
+ ```
67
+
68
+ ## Исключения
69
+
70
+ - `TypeError`: Если параметры не являются строками.
package/docs/helpers.md CHANGED
@@ -1,6 +1,8 @@
1
1
  [Главная](../README.md) / Помощники
2
2
 
3
- # Помощники для работы с типами данных
3
+ # Помощники
4
+
5
+ ## Помощники для работы с типами данных
4
6
 
5
7
  - [array](./helpers/array.md) — Создаёт массив из переданных значений, обрабатывая
6
8
  ассоциативные массивы (объекты с ключами).
@@ -14,6 +16,7 @@
14
16
  типом (`boolean`).
15
17
  - [is_boolean](./helpers/is_boolean.md) — Проверяет, является ли переданное значение
16
18
  логическим типом (`boolean`).
19
+ - [is_char](./helpers/is_char.md) — Проверяет, является ли значение одиночным символом.
17
20
  - [is_class](./helpers/is_class.md) — Проверяет, является ли переданная переменная классом.
18
21
  - [is_float](./helpers/is_float.md) — Проверяет, является ли значение числом с плавающей
19
22
  точкой.
@@ -51,3 +54,124 @@
51
54
  - [to_string](./helpers/to_string.md) — Преобразует значение в строку.
52
55
  - [value](./helpers/value.md) — Создает новый экземпляр класса `Value` с заданным значением.
53
56
 
57
+ ## Помощники для работы с массивами
58
+
59
+ - [array_chunk_with_keys](./helpers/array/array_chunk_with_keys.md) — Разбивает массив на
60
+ части указанной длины с сохранением ключей.
61
+ - [array_chunk](./helpers/array/array_chunk.md) — Разбивает массив на части указанной длины.
62
+ - [array_column](./helpers/array/array_column.md) — Извлекает значения указанного столбца из
63
+ массива объектов.
64
+ - [array_combine](./helpers/array/array_combine.md) — Объединяет два массива в ассоциативный
65
+ массив.
66
+ - [array_count_values](./helpers/array/array_count_values.md) — Подсчитывает количество
67
+ значений в массиве.
68
+ - [array_diff_assoc](./helpers/array/array_diff_assoc.md) — Вычисляет расхождение между
69
+ массивами с использованием стандартной функции сравнения значений и ключей.
70
+ - [array_diff_key](./helpers/array/array_diff_key.md) — Вычисляет расхождение между массивами
71
+ с использованием стандартной функции сравнения ключей.
72
+ - [array_diff_uassoc](./helpers/array/array_diff_uassoc.md) — Вычисляет расхождение между
73
+ массивами с использованием пользовательской функции сравнения ключей.
74
+ - [array_diff_ukey](./helpers/array/array_diff_ukey.md) — Вычисляет расхождение между
75
+ массивами с использованием пользовательской функции сравнения для ключей.
76
+ - [array_diff](./helpers/array/array_diff.md) — Вычисляет расхождение между массивами.
77
+ - [array_fill_keys](./helpers/array/array_fill_keys.md) — Заполняет массив значениями по
78
+ указанным ключам.
79
+ - [array_fill](./helpers/array/array_fill.md) — Заполняет массив значениями, начиная с
80
+ указанного индекса.
81
+ - [array_filter](./helpers/array/array_filter.md) — Фильтрует элементы массива с
82
+ использованием функции обратного вызова.
83
+ - [array_flip](./helpers/array/array_flip.md) — Меняет местами ключи и значения в массиве.
84
+ - [array_index_max](./helpers/array/array_index_max.md) — Возвращает максимальный индекс
85
+ массива.
86
+ - [array_index_min](./helpers/array/array_index_min.md) — Возвращает минимальный индекс
87
+ массива.
88
+ - [array_intersect_assoc](./helpers/array/array_intersect_assoc.md) — Вычисляет пересечение
89
+ между массивами с использованием стандартной функции сравнения для значений и ключей.
90
+ - [array_intersect_key](./helpers/array/array_intersect_key.md) — Вычисляет пересечение между
91
+ массивами с использованием стандартной функции сравнения для ключей.
92
+ - [array_intersect_uassoc](./helpers/array/array_intersect_uassoc.md) — Вычисляет пересечение
93
+ между массивами с использованием пользовательской функции сравнения для значений и ключей.
94
+ - [array_intersect_ukey](./helpers/array/array_intersect_ukey.md) — Вычисляет пересечение
95
+ между массивами с использованием пользовательской функции сравнения для ключей.
96
+ - [array_intersect](./helpers/array/array_intersect.md) — Вычисляет пересечение между
97
+ массивами с использованием стандартной функции сравнения значений.
98
+ - [array_key_exists](./helpers/array/array_key_exists.md) — Проверяет, существует ли указанный
99
+ ключ в массиве.
100
+ - [array_key_first](./helpers/array/array_key_first.md) — Возвращает первый ключ массива.
101
+ - [array_key_last](./helpers/array/array_key_last.md) — Возвращает последний ключ массива.
102
+ - [array_key_to_lower_case](./helpers/array/array_key_to_lower_case.md) — Преобразует ключи
103
+ ассоциативного массива в нижний регистр.
104
+ - [array_key_to_upper_case](./helpers/array/array_key_to_upper_case.md) — Преобразует ключи
105
+ ассоциативного массива в верхний регистр.
106
+ - [array_keys](./helpers/array/array_keys.md) — Возвращает массив ключей из переданного
107
+ массива или объекта.
108
+ - [array_map](./helpers/array/array_map.md) — Применяет функцию обратного вызова к каждому
109
+ элементу массива.
110
+ - [array_merge_recursive](./helpers/array/array_merge_recursive.md) — Объединяет несколько
111
+ массивов рекурсивно.
112
+ - [array_merge](./helpers/array/array_merge.md) — Объединяет несколько массивов в один.
113
+ - [array_pad](./helpers/array/array_pad.md) — Дополняет массив до заданной длины указанным
114
+ значением.
115
+ - [array_pop](./helpers/array/array_pop.md) — Удаляет и возвращает последний элемент массива.
116
+ - [array_product](./helpers/array/array_product.md) — Вычисляет произведение значений массива.
117
+ - [array_push](./helpers/array/array_push.md) — Добавляет один или несколько элементов в конец
118
+ массива.
119
+ - [array_rand](./helpers/array/array_rand.md) — Возвращает один или несколько случайных ключей
120
+ из массива.
121
+ - [array_reduce](./helpers/array/array_reduce.md) — Применяет функцию обратного вызова к
122
+ каждому элементу массива (слева направо), чтобы уменьшить его до одного значения.
123
+ - [array_replace_recursive](./helpers/array/array_replace_recursive.md) — Рекурсивно заменяет
124
+ значения в массиве на значения из других массивов.
125
+ - [array_replace](./helpers/array/array_replace.md) — Заменяет значения в массиве на значения
126
+ из других массивов.
127
+ - [array_reverse](./helpers/array/array_reverse.md) — Переворачивает массив, изменяя порядок
128
+ его элементов на обратный.
129
+ - [array_search](./helpers/array/array_search.md) — Ищет значение в массиве и возвращает ключ
130
+ первого найденного элемента.
131
+ - [array_shift](./helpers/array/array_shift.md) — Удаляет и возвращает первый элемент массива.
132
+ - [array_slice](./helpers/array/array_slice.md) — Возвращает новый массив, содержащий часть
133
+ исходного массива.
134
+ - [array_splice](./helpers/array/array_splice.md) — Удаляет элементы из массива и, при
135
+ необходимости, добавляет новые элементы на их место.
136
+ - [array_sum](./helpers/array/array_sum.md) — Вычисляет сумму значений массива.
137
+ - [array_udiff_assoc](./helpers/array/array_udiff_assoc.md) — Вычисляет расхождение между
138
+ массивами с использованием пользовательской функции сравнения для значений и ассоциативного
139
+ сравнения ключей.
140
+ - [array_udiff_uassoc](./helpers/array/array_udiff_uassoc.md) — Вычисляет расхождение между
141
+ массивами с использованием пользовательских функций сравнения для значений и ключей.
142
+ - [array_udiff](./helpers/array/array_udiff.md) — Вычисляет расхождение между массивами с
143
+ использованием пользовательской функции сравнения для значений.
144
+ - [array_uintersect_assoc](./helpers/array/array_uintersect_assoc.md) — Вычисляет пересечение
145
+ между массивами с использованием пользовательской функции сравнения для значений и стандартной
146
+ функции сравнения для ключей.
147
+ - [array_uintersect_uassoc](./helpers/array/array_uintersect_uassoc.md) — Вычисляет
148
+ пересечение между массивами с использованием пользовательских функций сравнения для значений и
149
+ ключей.
150
+ - [array_uintersect](./helpers/array/array_uintersect.md) — Вычисляет пересечение между
151
+ массивами с использованием пользовательской функции сравнения для значений.
152
+ - [array_unique](./helpers/array/array_unique.md) — Удаляет дублирующиеся значения из массива.
153
+ - [array_unshift](./helpers/array/array_unshift.md) — Добавляет один или несколько элементов в
154
+ начало массива.
155
+ - [array_values](./helpers/array/array_values.md) — Возвращает массив значений из переданного
156
+ массива или объекта.
157
+ - [array_walk_recursive](./helpers/array/array_walk_recursive.md) — Применяет пользовательскую
158
+ функцию к каждому элементу массива рекурсивно.
159
+ - [array_walk](./helpers/array/array_walk.md) — Применяет пользовательскую функцию к каждому
160
+ элементу массива.
161
+ - [count](./helpers/array/count.md) — Возвращает количество элементов в массиве или
162
+ ассоциативном массиве.
163
+ - [in_array](./helpers/array/in_array.md) — Проверяет, существует ли значение в массиве.
164
+ - [natsort](./helpers/array/natsort.md) — Сортирует массив в естественном порядке.
165
+ - [range](./helpers/array/range.md) — Генерирует массив значений от start до end с шагом step.
166
+ - [shuffle](./helpers/array/shuffle.md) — Перемешивает элементы массива в случайном порядке.
167
+ - [sort](./helpers/array/sort.md) — Сортирует элементы массива с использованием функции
168
+ сравнения.
169
+
170
+ ## Помощники для работы со строками
171
+
172
+ - [is_digit_char](./helpers/string/is_digit_char.md) — Проверяет, является ли символ цифрой.
173
+ - [is_whitespace_char](./helpers/string/is_whitespace_char.md) — Проверяет, является ли символ
174
+ пробельным.
175
+ - [natcompare_numeric](./helpers/string/natcompare_numeric.md) — Сравнивает две строки,
176
+ содержащие числовые значения, в естественном порядке.
177
+ - [natcompare](./helpers/string/natcompare.md) — Сравнивает две строки в естественном порядке.
package/index.mjs CHANGED
@@ -40,4 +40,69 @@ export { default as Type } from './src/classes/Type.mjs';
40
40
  export { default as Convert } from './src/classes/Convert.mjs';
41
41
  export { default as Value } from './src/classes/Value.mjs';
42
42
  export * from './src/constants.mjs';
43
-
43
+ export { default as array_key_to_lower_case } from './src/helpers/array/array_key_to_lower_case.mjs';
44
+ export { default as array_key_to_upper_case } from './src/helpers/array/array_key_to_upper_case.mjs';
45
+ export { default as array_chunk } from './src/helpers/array/array_chunk.mjs';
46
+ export { default as array_chunk_with_keys } from './src/helpers/array/array_chunk_with_keys.mjs';
47
+ export { default as array_column } from './src/helpers/array/array_column.mjs';
48
+ export { default as array_combine } from './src/helpers/array/array_combine.mjs';
49
+ export { default as array_count_values } from './src/helpers/array/array_count_values.mjs';
50
+ export { default as array_udiff_uassoc } from './src/helpers/array/array_udiff_uassoc.mjs';
51
+ export { default as array_udiff } from './src/helpers/array/array_udiff.mjs';
52
+ export { default as array_udiff_assoc } from './src/helpers/array/array_udiff_assoc.mjs';
53
+ export { default as array_diff } from './src/helpers/array/array_diff.mjs';
54
+ export { default as array_diff_ukey } from './src/helpers/array/array_diff_ukey.mjs';
55
+ export { default as array_diff_uassoc } from './src/helpers/array/array_diff_uassoc.mjs';
56
+ export { default as array_diff_key } from './src/helpers/array/array_diff_key.mjs';
57
+ export { default as array_diff_assoc } from './src/helpers/array/array_diff_assoc.mjs';
58
+ export { default as array_uintersect_uassoc } from './src/helpers/array/array_uintersect_uassoc.mjs';
59
+ export { default as array_uintersect } from './src/helpers/array/array_uintersect.mjs';
60
+ export { default as array_uintersect_assoc } from './src/helpers/array/array_uintersect_assoc.mjs';
61
+ export { default as array_intersect } from './src/helpers/array/array_intersect.mjs';
62
+ export { default as array_intersect_ukey } from './src/helpers/array/array_intersect_ukey.mjs';
63
+ export { default as array_intersect_uassoc } from './src/helpers/array/array_intersect_uassoc.mjs';
64
+ export { default as array_intersect_key } from './src/helpers/array/array_intersect_key.mjs';
65
+ export { default as array_intersect_assoc } from './src/helpers/array/array_intersect_assoc.mjs';
66
+ export { default as array_fill } from './src/helpers/array/array_fill.mjs';
67
+ export { default as array_fill_keys } from './src/helpers/array/array_fill_keys.mjs';
68
+ export { default as array_filter } from './src/helpers/array/array_filter.mjs';
69
+ export { default as array_flip } from './src/helpers/array/array_flip.mjs';
70
+ export { default as array_index_max } from './src/helpers/array/array_index_max.mjs';
71
+ export { default as array_index_min } from './src/helpers/array/array_index_min.mjs';
72
+ export { default as array_key_exists } from './src/helpers/array/array_key_exists.mjs';
73
+ export { default as array_key_first } from './src/helpers/array/array_key_first.mjs';
74
+ export { default as array_key_last } from './src/helpers/array/array_key_last.mjs';
75
+ export { default as array_keys } from './src/helpers/array/array_keys.mjs';
76
+ export { default as array_map } from './src/helpers/array/array_map.mjs';
77
+ export { default as array_merge } from './src/helpers/array/array_merge.mjs';
78
+ export { default as array_merge_recursive } from './src/helpers/array/array_merge_recursive.mjs';
79
+ export { default as array_pad } from './src/helpers/array/array_pad.mjs';
80
+ export { default as array_pop } from './src/helpers/array/array_pop.mjs';
81
+ export { default as array_reduce } from './src/helpers/array/array_reduce.mjs';
82
+ export { default as array_product } from './src/helpers/array/array_product.mjs';
83
+ export { default as array_push } from './src/helpers/array/array_push.mjs';
84
+ export { default as array_rand } from './src/helpers/array/array_rand.mjs';
85
+ export { default as array_replace } from './src/helpers/array/array_replace.mjs';
86
+ export { default as array_replace_recursive } from './src/helpers/array/array_replace_recursive.mjs';
87
+ export { default as array_reverse } from './src/helpers/array/array_reverse.mjs';
88
+ export { default as array_search } from './src/helpers/array/array_search.mjs';
89
+ export { default as array_shift } from './src/helpers/array/array_shift.mjs';
90
+ export { default as array_slice } from './src/helpers/array/array_slice.mjs';
91
+ export { default as array_splice } from './src/helpers/array/array_splice.mjs';
92
+ export { default as array_sum } from './src/helpers/array/array_sum.mjs';
93
+ export { default as array_unique } from './src/helpers/array/array_unique.mjs';
94
+ export { default as array_unshift } from './src/helpers/array/array_unshift.mjs';
95
+ export { default as array_values } from './src/helpers/array/array_values.mjs';
96
+ export { default as array_walk } from './src/helpers/array/array_walk.mjs';
97
+ export { default as array_walk_recursive } from './src/helpers/array/array_walk_recursive.mjs';
98
+ export { default as count } from './src/helpers/array/count.mjs';
99
+ export { default as in_array } from './src/helpers/array/in_array.mjs';
100
+ export { default as range } from './src/helpers/array/range.mjs';
101
+ export { default as shuffle } from './src/helpers/array/shuffle.mjs';
102
+ export { default as sort } from './src/helpers/array/sort.mjs';
103
+ export { default as is_char } from './src/helpers/is_char.mjs';
104
+ export { default as is_whitespace_char } from './src/helpers/string/is_whitespace_char.mjs';
105
+ export { default as is_digit_char } from './src/helpers/string/is_digit_char.mjs';
106
+ export { default as natcompare_numeric } from './src/helpers/string/natcompare_numeric.mjs';
107
+ export { default as natcompare } from './src/helpers/string/natcompare.mjs';
108
+ export { default as natsort } from './src/helpers/array/natsort.mjs';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rogolev/value",
3
- "version": "0.0.3",
3
+ "version": "0.0.4",
4
4
  "description": "Библиотека, переосмысливающая типы данных и работу с ними.",
5
5
  "type": "module",
6
6
  "repository": {
@@ -46,3 +46,4 @@
46
46
  "test": "jest"
47
47
  }
48
48
  }
49
+
@@ -146,7 +146,7 @@ export default {
146
146
  * - `crlf` - Символы Carriage Return + Line Feed (\r\n).
147
147
  * - `cr` - Только символ Carriage Return (\r).
148
148
  */
149
- endOfLine: 'crlf',
149
+ endOfLine: 'lf',
150
150
 
151
151
  /**
152
152
  * Изменить, когда свойства в объектах заключаются в кавычки.
@@ -222,3 +222,4 @@ export default {
222
222
  */
223
223
  useTabs: false,
224
224
  };
225
+
@@ -0,0 +1,102 @@
1
+ import is_array from '../is_array.mjs';
2
+ import is_int from '../is_int.mjs';
3
+
4
+ /**
5
+ * Разбивает массив на части указанной длины.
6
+ *
7
+ * ### Описание
8
+ *
9
+ * Функция `array_chunk` используется для разбивки массива на части указанной длины.
10
+ * Если переданное значение не является массивом, функция выбрасывает ошибку типа `TypeError`.
11
+ * Если длина не является целым числом или меньше 1, функция выбрасывает соответствующую ошибку.
12
+ *
13
+ * ### Параметры
14
+ *
15
+ * - `value` (array): Массив, который необходимо разбить на части.
16
+ * - `length` (number): Длина каждой части.
17
+ *
18
+ * ### Возвращаемое значение
19
+ *
20
+ * Возвращает новый массив, содержащий части исходного массива.
21
+ *
22
+ * ### Примеры использования
23
+ *
24
+ * 1. Разбивка массива на части указанной длины:
25
+ *
26
+ * ```js
27
+ * const array = [1, 2, 3, 4, 5];
28
+ * const result = array_chunk(array, 2);
29
+ * console.log(result); // [[1, 2], [3, 4], [5]]
30
+ * ```
31
+ *
32
+ * 2. Обработка пустого массива:
33
+ *
34
+ * ```js
35
+ * const array = [];
36
+ * const result = array_chunk(array, 2);
37
+ * console.log(result); // []
38
+ * ```
39
+ *
40
+ * 3. Обработка ассоциативного массива:
41
+ *
42
+ * ```js
43
+ * const assoc = { key1: 'value1', key2: 'value2', key3: 'value3', key4: 'value4' };
44
+ * const result = array_chunk(assoc, 2);
45
+ * console.log(result); // [['value1', 'value2'], ['value3', 'value4']]
46
+ * ```
47
+ *
48
+ * 4. Обработка значения, не являющегося массивом:
49
+ *
50
+ * ```js
51
+ * try {
52
+ * const result = array_chunk('not an array', 2);
53
+ * } catch (e) {
54
+ * console.error(e.message); // Параметр "value" должен быть массивом.
55
+ * }
56
+ * ```
57
+ *
58
+ * 5. Обработка некорректной длины:
59
+ *
60
+ * ```js
61
+ * try {
62
+ * const result = array_chunk([1, 2, 3], 'not an integer');
63
+ * } catch (e) {
64
+ * console.error(e.message); // Параметр "length" должен быть целым числом.
65
+ * }
66
+ *
67
+ * try {
68
+ * const result = array_chunk([1, 2, 3], 0);
69
+ * } catch (e) {
70
+ * console.error(e.message); // Параметр "length" должен быть больше нуля.
71
+ * }
72
+ * ```
73
+ *
74
+ * @param {array} value Массив, который необходимо разбить на части.
75
+ * @param {number} length Длина каждой части.
76
+ * @returns {array} Возвращает новый массив, содержащий части исходного массива.
77
+ * @throws {TypeError} Если переданное значение не является массивом.
78
+ * @throws {TypeError} Если длина не является целым числом.
79
+ * @throws {Error} Если длина меньше 1.
80
+ */
81
+ export default function array_chunk(value, length) {
82
+ if (!is_array(value)) {
83
+ throw new TypeError('Параметр "value" должен быть массивом.');
84
+ }
85
+
86
+ if (!is_int(length)) {
87
+ throw new TypeError('Параметр "length" должен быть целым числом.');
88
+ }
89
+
90
+ if (length < 1) {
91
+ throw new Error('Параметр "length" должен быть больше нуля.');
92
+ }
93
+
94
+ const result = [];
95
+ const values = Object.values(value);
96
+
97
+ while (values.length) {
98
+ result.push(values.splice(0, length));
99
+ }
100
+
101
+ return result;
102
+ }
@@ -0,0 +1,102 @@
1
+ import is_array from '../is_array.mjs';
2
+ import is_int from '../is_int.mjs';
3
+
4
+ /**
5
+ * Разбивает массив на части указанной длины с сохранением ключей.
6
+ *
7
+ * ### Описание
8
+ *
9
+ * Функция `array_chunk_with_keys` используется для разбивки массива на части указанной длины с сохранением ключей.
10
+ * Если переданное значение не является массивом, функция выбрасывает ошибку типа `TypeError`.
11
+ * Если длина не является целым числом или меньше 1, функция выбрасывает соответствующую ошибку.
12
+ *
13
+ * ### Параметры
14
+ *
15
+ * - `value` (array): Массив, который необходимо разбить на части.
16
+ * - `length` (number): Длина каждой части.
17
+ *
18
+ * ### Возвращаемое значение
19
+ *
20
+ * Возвращает новый массив, содержащий части исходного массива с сохранением ключей.
21
+ *
22
+ * ### Примеры использования
23
+ *
24
+ * 1. Разбивка ассоциативного массива на части указанной длины с сохранением ключей:
25
+ *
26
+ * ```js
27
+ * const assoc = { a: 1, b: 2, c: 3, d: 4, e: 5 };
28
+ * const result = array_chunk_with_keys(assoc, 2);
29
+ * console.log(result); // [{ a: 1, b: 2 }, { c: 3, d: 4 }, { e: 5 }]
30
+ * ```
31
+ *
32
+ * 2. Обработка пустого ассоциативного массива:
33
+ *
34
+ * ```js
35
+ * const assoc = {};
36
+ * const result = array_chunk_with_keys(assoc, 2);
37
+ * console.log(result); // []
38
+ * ```
39
+ *
40
+ * 3. Разбивка обычного массива на части указанной длины с сохранением ключей:
41
+ *
42
+ * ```js
43
+ * const array = [1, 2, 3, 4, 5];
44
+ * const result = array_chunk_with_keys(array, 2);
45
+ * console.log(result); // [{ 0: 1, 1: 2 }, { 2: 3, 3: 4 }, { 4: 5 }]
46
+ * ```
47
+ *
48
+ * 4. Обработка значения, не являющегося массивом:
49
+ *
50
+ * ```js
51
+ * try {
52
+ * const result = array_chunk_with_keys('not an array', 2);
53
+ * } catch (e) {
54
+ * console.error(e.message); // Параметр "value" должен быть массивом.
55
+ * }
56
+ * ```
57
+ *
58
+ * 5. Обработка некорректной длины:
59
+ *
60
+ * ```js
61
+ * try {
62
+ * const result = array_chunk_with_keys([1, 2, 3], 'not an integer');
63
+ * } catch (e) {
64
+ * console.error(e.message); // Параметр "length" должен быть целым числом.
65
+ * }
66
+ *
67
+ * try {
68
+ * const result = array_chunk_with_keys([1, 2, 3], 0);
69
+ * } catch (e) {
70
+ * console.error(e.message); // Параметр "length" должен быть больше нуля.
71
+ * }
72
+ * ```
73
+ *
74
+ * @param {array} value Массив, который необходимо разбить на части.
75
+ * @param {number} length Длина каждой части.
76
+ * @returns {array} Возвращает новый массив, содержащий части исходного массива с сохранением ключей.
77
+ * @throws {TypeError} Если переданное значение не является массивом.
78
+ * @throws {TypeError} Если длина не является целым числом.
79
+ * @throws {Error} Если длина меньше 1.
80
+ */
81
+ export default function array_chunk_with_keys(value, length) {
82
+ if (!is_array(value)) {
83
+ throw new TypeError('Параметр "value" должен быть массивом.');
84
+ }
85
+
86
+ if (!is_int(length)) {
87
+ throw new TypeError('Параметр "length" должен быть целым числом.');
88
+ }
89
+
90
+ if (length < 1) {
91
+ throw new Error('Параметр "length" должен быть больше нуля.');
92
+ }
93
+
94
+ const result = [];
95
+ const entries = Object.entries(value);
96
+
97
+ while (entries.length) {
98
+ result.push(Object.fromEntries(entries.splice(0, length)));
99
+ }
100
+
101
+ return result;
102
+ }
@@ -0,0 +1,131 @@
1
+ import array from '../array.mjs';
2
+ import is_int from '../is_int.mjs';
3
+ import is_list from '../is_list.mjs';
4
+ import is_null from '../is_null.mjs';
5
+ import is_string from '../is_string.mjs';
6
+
7
+ /**
8
+ * Извлекает значения указанного столбца из массива объектов.
9
+ *
10
+ * ### Описание
11
+ *
12
+ * Функция `array_column` используется для извлечения значений указанного столбца из массива объектов.
13
+ * Если переданное значение не является списком, функция выбрасывает ошибку типа `TypeError`.
14
+ * Если ключ столбца или индексный ключ не являются строкой или целым числом, функция выбрасывает соответствующую ошибку.
15
+ *
16
+ * ### Параметры
17
+ *
18
+ * - `value` (array): Массив объектов, из которого необходимо извлечь значения.
19
+ * - `column_key` (string | number): Ключ столбца, значения которого необходимо извлечь.
20
+ * - `index_key` (string | number | null): Ключ, который будет использоваться для индексации возвращаемого массива (по умолчанию `null`).
21
+ *
22
+ * ### Возвращаемое значение
23
+ *
24
+ * Возвращает массив значений указанного столбца. Если указан индексный ключ, возвращает объект с индексированными значениями.
25
+ *
26
+ * ### Примеры использования
27
+ *
28
+ * 1. Извлечение значений указанного столбца из массива объектов:
29
+ *
30
+ * ```js
31
+ * const array = [
32
+ * { id: 1, name: 'Alice' },
33
+ * { id: 2, name: 'Bob' },
34
+ * { id: 3, name: 'Charlie' },
35
+ * ];
36
+ * const result = array_column(array, 'name');
37
+ * console.log(result); // ['Alice', 'Bob', 'Charlie']
38
+ * ```
39
+ *
40
+ * 2. Извлечение значений указанного столбца с использованием индексного ключа:
41
+ *
42
+ * ```js
43
+ * const array = [
44
+ * { id: 1, name: 'Alice' },
45
+ * { id: 2, name: 'Bob' },
46
+ * { id: 3, name: 'Charlie' },
47
+ * ];
48
+ * const result = array_column(array, 'name', 'id');
49
+ * console.log(result); // { 1: 'Alice', 2: 'Bob', 3: 'Charlie' }
50
+ * ```
51
+ *
52
+ * 3. Обработка пустого массива:
53
+ *
54
+ * ```js
55
+ * const array = [];
56
+ * const result = array_column(array, 'name');
57
+ * console.log(result); // []
58
+ * ```
59
+ *
60
+ * 4. Обработка значения, не являющегося массивом:
61
+ *
62
+ * ```js
63
+ * try {
64
+ * const result = array_column('not an array', 'name');
65
+ * } catch (e) {
66
+ * console.error(e.message); // Параметр "value" должен быть списком.
67
+ * }
68
+ * ```
69
+ *
70
+ * 5. Обработка некорректного ключа столбца:
71
+ *
72
+ * ```js
73
+ * const array = [
74
+ * { id: 1, name: 'Alice' },
75
+ * { id: 2, name: 'Bob' },
76
+ * { id: 3, name: 'Charlie' },
77
+ * ];
78
+ * try {
79
+ * const result = array_column(array, {});
80
+ * } catch (e) {
81
+ * console.error(e.message); // Параметр "column_key" должен быть строкой или целым числом.
82
+ * }
83
+ * ```
84
+ *
85
+ * 6. Обработка некорректного индексного ключа:
86
+ *
87
+ * ```js
88
+ * const array = [
89
+ * { id: 1, name: 'Alice' },
90
+ * { id: 2, name: 'Bob' },
91
+ * { id: 3, name: 'Charlie' },
92
+ * ];
93
+ * try {
94
+ * const result = array_column(array, 'name', {});
95
+ * } catch (e) {
96
+ * console.error(e.message); // Параметр "index_key" должен быть строкой или целым числом.
97
+ * }
98
+ * ```
99
+ *
100
+ * @param {array} value Массив объектов, из которого необходимо извлечь значения.
101
+ * @param {string | number} column_key Ключ столбца, значения которого необходимо извлечь.
102
+ * @param {string | number | null} [index_key=null] Ключ, который будет использоваться для индексации возвращаемого массива.
103
+ * @returns {array | object} Возвращает массив значений указанного столбца. Если указан индексный ключ, возвращает объект с индексированными значениями.
104
+ * @throws {TypeError} Если переданное значение не является списком.
105
+ * @throws {TypeError} Если ключ столбца или индексный ключ не являются строкой или целым числом.
106
+ */
107
+ export default function array_column(value, column_key, index_key = null) {
108
+ if (!is_list(value)) {
109
+ throw new TypeError('Параметр "value" должен быть списком.');
110
+ }
111
+
112
+ if (!is_string(column_key) && !is_int(column_key)) {
113
+ throw new TypeError('Параметр "column_key" должен быть строкой или целым числом.');
114
+ }
115
+
116
+ if (!is_null(index_key) && !is_string(index_key) && !is_int(index_key)) {
117
+ throw new TypeError('Параметр "index_key" должен быть строкой или целым числом.');
118
+ }
119
+
120
+ if (is_null(index_key)) {
121
+ return Object.values(value).map((model) => model[column_key]);
122
+ }
123
+
124
+ const result = array({});
125
+
126
+ for (const model of value) {
127
+ result[model[index_key]] = model[column_key];
128
+ }
129
+
130
+ return result;
131
+ }