@rogolev/value 0.0.3 → 0.0.4

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.
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
+ }