@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,72 @@
1
+ import array_uintersect_uassoc from './array_uintersect_uassoc.mjs';
2
+
3
+ /**
4
+ * Вычисляет пересечение между массивами с использованием пользовательской функции сравнения для ключей.
5
+ *
6
+ * ### Описание
7
+ *
8
+ * Функция `array_intersect_ukey` используется для вычисления пересечения между массивами с использованием пользовательской функции сравнения для ключей.
9
+ * Она возвращает массив, содержащий элементы из первого массива, которые присутствуют в других массивах.
10
+ *
11
+ * ### Параметры
12
+ *
13
+ * - `key_compare_func` (function): Функция для сравнения ключей.
14
+ * - `original_array` (array): Исходный массив.
15
+ * - `...arrays` (array): Массивы для сравнения.
16
+ *
17
+ * ### Возвращаемое значение
18
+ *
19
+ * Возвращает массив, содержащий элементы из первого массива, которые присутствуют в других массивах.
20
+ *
21
+ * ### Примеры использования
22
+ *
23
+ * 1. Сравнение массивов с использованием пользовательской функции сравнения ключей:
24
+ *
25
+ * ```js
26
+ * const key_compare_func = (a, b) => a === b;
27
+ * const original_array = { a: 1, b: 2, c: 3 };
28
+ * const array1 = { a: 1, b: 2 };
29
+ * const array2 = { b: 2, c: 3 };
30
+ * const result = array_intersect_ukey(key_compare_func, original_array, array1, array2);
31
+ * console.log(result); // { a: 1, b: 2, c: 3 }
32
+ * ```
33
+ *
34
+ * 2. Обработка пустых массивов:
35
+ *
36
+ * ```js
37
+ * const key_compare_func = (a, b) => a === b;
38
+ * const original_array = {};
39
+ * const array1 = {};
40
+ * const result = array_intersect_ukey(key_compare_func, original_array, array1);
41
+ * console.log(result); // {}
42
+ * ```
43
+ *
44
+ * 3. Обработка значений, не являющихся массивами:
45
+ *
46
+ * ```js
47
+ * try {
48
+ * const result = array_intersect_ukey('not a function', 'not an array');
49
+ * } catch (e) {
50
+ * console.error(e.message); // Параметр "key_compare_func" должен быть функцией.
51
+ * }
52
+ * ```
53
+ *
54
+ * 4. Сравнение массивов с различными типами данных:
55
+ *
56
+ * ```js
57
+ * const key_compare_func = (a, b) => a === b;
58
+ * const original_array = { a: 1, b: '2', c: true };
59
+ * const array1 = { a: 1, b: 2, d: false };
60
+ * const result = array_intersect_ukey(key_compare_func, original_array, array1);
61
+ * console.log(result); // { a: 1, b: '2' }
62
+ * ```
63
+ *
64
+ * @param {function} key_compare_func Функция для сравнения ключей.
65
+ * @param {object} original_array Исходный массив.
66
+ * @param {...object} arrays Массивы для сравнения.
67
+ * @returns {object} Возвращает массив, содержащий элементы из первого массива, которые присутствуют в других массивах.
68
+ * @throws {TypeError} Если параметры не являются функциями или массивами.
69
+ */
70
+ export default function array_intersect_ukey(key_compare_func, original_array, ...arrays) {
71
+ return array_uintersect_uassoc(() => true, key_compare_func, original_array, ...arrays);
72
+ }
@@ -0,0 +1,83 @@
1
+ import is_array from '../is_array.mjs';
2
+ import is_int from '../is_int.mjs';
3
+ import is_string from '../is_string.mjs';
4
+
5
+ /**
6
+ * Проверяет, существует ли указанный ключ в массиве.
7
+ *
8
+ * ### Описание
9
+ *
10
+ * Функция `array_key_exists` используется для проверки существования указанного ключа в массиве.
11
+ * Она возвращает `true`, если ключ существует в массиве, и `false` в противном случае.
12
+ *
13
+ * ### Параметры
14
+ *
15
+ * - `value` (object): Исходный массив.
16
+ * - `key` (number|string): Ключ, который необходимо проверить.
17
+ *
18
+ * ### Возвращаемое значение
19
+ *
20
+ * Возвращает `true`, если ключ существует в массиве, и `false` в противном случае.
21
+ *
22
+ * ### Примеры использования
23
+ *
24
+ * 1. Проверка существования ключа в обычном массиве:
25
+ *
26
+ * ```js
27
+ * const array = [1, 2, 3];
28
+ * const result = array_key_exists(array, 1);
29
+ * console.log(result); // true
30
+ * ```
31
+ *
32
+ * 2. Проверка существования ключа в ассоциативном массиве:
33
+ *
34
+ * ```js
35
+ * const array = { a: 1, b: 2, c: 3 };
36
+ * const result = array_key_exists(array, 'b');
37
+ * console.log(result); // true
38
+ * ```
39
+ *
40
+ * 3. Проверка отсутствия ключа в массиве:
41
+ *
42
+ * ```js
43
+ * const array = [1, 2, 3];
44
+ * const result = array_key_exists(array, 5);
45
+ * console.log(result); // false
46
+ * ```
47
+ *
48
+ * 4. Обработка значений, не являющихся массивами:
49
+ *
50
+ * ```js
51
+ * try {
52
+ * const result = array_key_exists('not an array', 1);
53
+ * } catch (e) {
54
+ * console.error(e.message); // Параметр "value" должен быть массивом.
55
+ * }
56
+ * ```
57
+ *
58
+ * 5. Обработка значений ключа, не являющихся целыми числами или строками:
59
+ *
60
+ * ```js
61
+ * try {
62
+ * const result = array_key_exists([1, 2, 3], {});
63
+ * } catch (e) {
64
+ * console.error(e.message); // Параметр "key" должен быть целым числом или строкой.
65
+ * }
66
+ * ```
67
+ *
68
+ * @param {object} value Исходный массив.
69
+ * @param {number|string} key Ключ, который необходимо проверить.
70
+ * @returns {boolean} Возвращает `true`, если ключ существует в массиве, и `false` в противном случае.
71
+ * @throws {TypeError} Если параметры не являются массивом, целым числом или строкой.
72
+ */
73
+ export default function array_key_exists(value, key) {
74
+ if (!is_array(value)) {
75
+ throw new TypeError('Параметр "value" должен быть массивом.');
76
+ }
77
+
78
+ if (!is_int(key) && !is_string(key)) {
79
+ throw new TypeError('Параметр "key" должен быть целым числом или строкой.');
80
+ }
81
+
82
+ return key in value;
83
+ }
@@ -0,0 +1,73 @@
1
+ import empty from '../empty.mjs';
2
+ import is_array from '../is_array.mjs';
3
+ import is_nan from '../is_nan.mjs';
4
+
5
+ /**
6
+ * Возвращает первый ключ массива.
7
+ *
8
+ * ### Описание
9
+ *
10
+ * Функция `array_key_first` используется для получения первого ключа массива.
11
+ * Она возвращает первый ключ для обычных массивов и ассоциативных массивов.
12
+ *
13
+ * ### Параметры
14
+ *
15
+ * - `value` (array): Исходный массив.
16
+ *
17
+ * ### Возвращаемое значение
18
+ *
19
+ * Возвращает первый ключ массива. Если массив пустой, возвращает `null`.
20
+ *
21
+ * ### Примеры использования
22
+ *
23
+ * 1. Получение первого ключа обычного массива:
24
+ *
25
+ * ```js
26
+ * const array = [1, 2, 3];
27
+ * const result = array_key_first(array);
28
+ * console.log(result); // 0
29
+ * ```
30
+ *
31
+ * 2. Получение первого ключа ассоциативного массива:
32
+ *
33
+ * ```js
34
+ * const array = { a: 1, b: 2, c: 3 };
35
+ * const result = array_key_first(array);
36
+ * console.log(result); // 'a'
37
+ * ```
38
+ *
39
+ * 3. Обработка пустого массива:
40
+ *
41
+ * ```js
42
+ * const array = [];
43
+ * const result = array_key_first(array);
44
+ * console.log(result); // null
45
+ * ```
46
+ *
47
+ * 4. Обработка значений, не являющихся массивами:
48
+ *
49
+ * ```js
50
+ * try {
51
+ * const result = array_key_first('not an array');
52
+ * } catch (e) {
53
+ * console.error(e.message); // Параметр "value" должен быть массивом.
54
+ * }
55
+ * ```
56
+ *
57
+ * @param {object} value Исходный массив.
58
+ * @returns {number|string|null} Возвращает первый ключ массива. Если массив пустой, возвращает `null`.
59
+ * @throws {TypeError} Если параметр не является массивом.
60
+ */
61
+ export default function array_key_first(value) {
62
+ if (!is_array(value)) {
63
+ throw new TypeError('Параметр "value" должен быть массивом.');
64
+ }
65
+
66
+ if (empty(value)) {
67
+ return null;
68
+ }
69
+
70
+ const result = Object.keys(value)[0];
71
+
72
+ return is_nan(Number(result)) ? result : Number(result);
73
+ }
@@ -0,0 +1,74 @@
1
+ import empty from '../empty.mjs';
2
+ import is_array from '../is_array.mjs';
3
+ import is_nan from '../is_nan.mjs';
4
+
5
+ /**
6
+ * Возвращает последний ключ массива.
7
+ *
8
+ * ### Описание
9
+ *
10
+ * Функция `array_key_last` используется для получения последнего ключа массива.
11
+ * Она возвращает последний ключ для обычных массивов и ассоциативных массивов.
12
+ *
13
+ * ### Параметры
14
+ *
15
+ * - `value` (object): Исходный массив.
16
+ *
17
+ * ### Возвращаемое значение
18
+ *
19
+ * Возвращает последний ключ массива. Если массив пустой, возвращает `null`.
20
+ *
21
+ * ### Примеры использования
22
+ *
23
+ * 1. Получение последнего ключа обычного массива:
24
+ *
25
+ * ```js
26
+ * const array = [1, 2, 3];
27
+ * const result = array_key_last(array);
28
+ * console.log(result); // 2
29
+ * ```
30
+ *
31
+ * 2. Получение последнего ключа ассоциативного массива:
32
+ *
33
+ * ```js
34
+ * const array = { a: 1, b: 2, c: 3 };
35
+ * const result = array_key_last(array);
36
+ * console.log(result); // 'c'
37
+ * ```
38
+ *
39
+ * 3. Обработка пустого массива:
40
+ *
41
+ * ```js
42
+ * const array = [];
43
+ * const result = array_key_last(array);
44
+ * console.log(result); // null
45
+ * ```
46
+ *
47
+ * 4. Обработка значений, не являющихся массивами:
48
+ *
49
+ * ```js
50
+ * try {
51
+ * const result = array_key_last('not an array');
52
+ * } catch (e) {
53
+ * console.error(e.message); // Параметр "value" должен быть массивом.
54
+ * }
55
+ * ```
56
+ *
57
+ * @param {object} value Исходный массив.
58
+ * @returns {number|string|null} Возвращает последний ключ массива. Если массив пустой, возвращает `null`.
59
+ * @throws {TypeError} Если параметр не является массивом.
60
+ */
61
+ export default function array_key_last(value) {
62
+ if (!is_array(value)) {
63
+ throw new TypeError('Параметр "value" должен быть массивом.');
64
+ }
65
+
66
+ if (empty(value)) {
67
+ return null;
68
+ }
69
+
70
+ const keys = Object.keys(value);
71
+ const result = keys[keys.length - 1];
72
+
73
+ return is_nan(Number(result)) ? result : Number(result);
74
+ }
@@ -0,0 +1,71 @@
1
+ import array from '../array.mjs';
2
+ import is_array from '../is_array.mjs';
3
+ import is_list from '../is_list.mjs';
4
+
5
+ /**
6
+ * Преобразует ключи ассоциативного массива в нижний регистр.
7
+ *
8
+ * ### Описание
9
+ *
10
+ * Функция `array_key_to_lower_case` используется для преобразования всех ключей ассоциативного массива в нижний регистр.
11
+ * Если переданное значение не является массивом, функция выбрасывает ошибку типа `TypeError`.
12
+ * Если переданное значение является списком (обычным массивом), оно возвращается без изменений.
13
+ *
14
+ * ### Параметры
15
+ *
16
+ * - `value` (object): Ассоциативный массив, ключи которого необходимо преобразовать в нижний регистр.
17
+ *
18
+ * ### Возвращаемое значение
19
+ *
20
+ * Возвращает новый ассоциативный массив с ключами в нижнем регистре.
21
+ * Если переданное значение является списком, оно возвращается без изменений.
22
+ *
23
+ * ### Примеры использования
24
+ *
25
+ * 1. Преобразование ключей ассоциативного массива в нижний регистр:
26
+ *
27
+ * ```js
28
+ * const assoc = { Key1: 'value1', Key2: 'value2' };
29
+ * const result = array_key_to_lower_case(assoc);
30
+ * console.log(result); // { key1: 'value1', key2: 'value2' }
31
+ * ```
32
+ *
33
+ * 2. Обработка списка (обычного массива):
34
+ *
35
+ * ```js
36
+ * const list = [1, 2, 3];
37
+ * const result = array_key_to_lower_case(list);
38
+ * console.log(result); // [1, 2, 3]
39
+ * ```
40
+ *
41
+ * 3. Обработка значения, не являющегося массивом:
42
+ *
43
+ * ```js
44
+ * try {
45
+ * const result = array_key_to_lower_case('not an array');
46
+ * } catch (e) {
47
+ * console.error(e.message); // Параметр "array" должен быть массивом.
48
+ * }
49
+ * ```
50
+ *
51
+ * @param {object} value Ассоциативный массив, ключи которого необходимо преобразовать в нижний регистр.
52
+ * @returns {object} Возвращает новый ассоциативный массив с ключами в нижнем регистре.
53
+ * @throws {TypeError} Если переданное значение не является массивом.
54
+ */
55
+ export default function array_key_to_lower_case(value) {
56
+ if (!is_array(value)) {
57
+ throw new TypeError('Параметр "array" должен быть массивом.');
58
+ }
59
+
60
+ if (is_list(value)) {
61
+ return value;
62
+ }
63
+
64
+ const result = array({});
65
+
66
+ for (const k in value) {
67
+ result[k.toLowerCase()] = value[k];
68
+ }
69
+
70
+ return result;
71
+ }
@@ -0,0 +1,71 @@
1
+ import array from '../array.mjs';
2
+ import is_array from '../is_array.mjs';
3
+ import is_list from '../is_list.mjs';
4
+
5
+ /**
6
+ * Преобразует ключи ассоциативного массива в верхний регистр.
7
+ *
8
+ * ### Описание
9
+ *
10
+ * Функция `array_key_to_upper_case` используется для преобразования всех ключей ассоциативного массива в верхний регистр.
11
+ * Если переданное значение не является массивом, функция выбрасывает ошибку типа `TypeError`.
12
+ * Если переданное значение является списком (обычным массивом), оно возвращается без изменений.
13
+ *
14
+ * ### Параметры
15
+ *
16
+ * - `value` (object): Ассоциативный массив, ключи которого необходимо преобразовать в верхний регистр.
17
+ *
18
+ * ### Возвращаемое значение
19
+ *
20
+ * Возвращает новый ассоциативный массив с ключами в верхнем регистре.
21
+ * Если переданное значение является списком, оно возвращается без изменений.
22
+ *
23
+ * ### Примеры использования
24
+ *
25
+ * 1. Преобразование ключей ассоциативного массива в верхний регистр:
26
+ *
27
+ * ```js
28
+ * const assoc = { key1: 'value1', key2: 'value2' };
29
+ * const result = array_key_to_upper_case(assoc);
30
+ * console.log(result); // { KEY1: 'value1', KEY2: 'value2' }
31
+ * ```
32
+ *
33
+ * 2. Обработка списка (обычного массива):
34
+ *
35
+ * ```js
36
+ * const list = [1, 2, 3];
37
+ * const result = array_key_to_upper_case(list);
38
+ * console.log(result); // [1, 2, 3]
39
+ * ```
40
+ *
41
+ * 3. Обработка значения, не являющегося массивом:
42
+ *
43
+ * ```js
44
+ * try {
45
+ * const result = array_key_to_upper_case('not an array');
46
+ * } catch (e) {
47
+ * console.error(e.message); // Параметр "array" должен быть массивом.
48
+ * }
49
+ * ```
50
+ *
51
+ * @param {object} value Ассоциативный массив, ключи которого необходимо преобразовать в верхний регистр.
52
+ * @returns {object} Возвращает новый ассоциативный массив с ключами в верхнем регистре.
53
+ * @throws {TypeError} Если переданное значение не является массивом.
54
+ */
55
+ export default function array_key_to_upper_case(value) {
56
+ if (!is_array(value)) {
57
+ throw new TypeError('Параметр "array" должен быть массивом.');
58
+ }
59
+
60
+ if (is_list(value)) {
61
+ return value;
62
+ }
63
+
64
+ const result = array({});
65
+
66
+ for (const k in value) {
67
+ result[k.toUpperCase()] = value[k];
68
+ }
69
+
70
+ return result;
71
+ }
@@ -0,0 +1,65 @@
1
+ import is_array from '../is_array.mjs';
2
+
3
+ /**
4
+ * Возвращает массив ключей из переданного массива или объекта.
5
+ *
6
+ * ### Описание
7
+ *
8
+ * Функция `array_keys` используется для получения массива ключей из переданного массива или объекта.
9
+ * Она возвращает массив, содержащий все ключи переданного массива или объекта.
10
+ *
11
+ * ### Параметры
12
+ *
13
+ * - `value` (object): Исходный массив или объект.
14
+ *
15
+ * ### Возвращаемое значение
16
+ *
17
+ * Возвращает массив, содержащий все ключи переданного массива или объекта.
18
+ *
19
+ * ### Примеры использования
20
+ *
21
+ * 1. Получение ключей из обычного массива:
22
+ *
23
+ * ```js
24
+ * const array = [1, 2, 3];
25
+ * const result = array_keys(array);
26
+ * console.log(result); // ['0', '1', '2']
27
+ * ```
28
+ *
29
+ * 2. Получение ключей из ассоциативного массива:
30
+ *
31
+ * ```js
32
+ * const array = { a: 1, b: 2, c: 3 };
33
+ * const result = array_keys(array);
34
+ * console.log(result); // ['a', 'b', 'c']
35
+ * ```
36
+ *
37
+ * 3. Обработка пустого массива:
38
+ *
39
+ * ```js
40
+ * const array = [];
41
+ * const result = array_keys(array);
42
+ * console.log(result); // []
43
+ * ```
44
+ *
45
+ * 4. Обработка значений, не являющихся массивами или объектами:
46
+ *
47
+ * ```js
48
+ * try {
49
+ * const result = array_keys('not an array');
50
+ * } catch (e) {
51
+ * console.error(e.message); // Параметр "value" должен быть массивом.
52
+ * }
53
+ * ```
54
+ *
55
+ * @param {object} value Исходный массив или объект.
56
+ * @returns {array} Возвращает массив, содержащий все ключи переданного массива или объекта.
57
+ * @throws {TypeError} Если параметр не является массивом или объектом.
58
+ */
59
+ export default function array_keys(value) {
60
+ if (!is_array(value)) {
61
+ throw new TypeError('Параметр "value" должен быть массивом.');
62
+ }
63
+
64
+ return Object.keys(value);
65
+ }
@@ -0,0 +1,84 @@
1
+ import array from '../array.mjs';
2
+ import is_array from '../is_array.mjs';
3
+ import is_function from '../is_function.mjs';
4
+ import is_list from '../is_list.mjs';
5
+
6
+ /**
7
+ * Применяет функцию обратного вызова к каждому элементу массива.
8
+ *
9
+ * ### Описание
10
+ *
11
+ * Функция `array_map` используется для применения функции обратного вызова к каждому элементу массива.
12
+ * Она возвращает новый массив, содержащий результаты применения функции обратного вызова к каждому элементу исходного массива.
13
+ *
14
+ * ### Параметры
15
+ *
16
+ * - `value` (object): Исходный массив.
17
+ * - `callback` (function): Функция обратного вызова, применяемая к каждому элементу массива.
18
+ *
19
+ * ### Возвращаемое значение
20
+ *
21
+ * Возвращает новый массив, содержащий результаты применения функции обратного вызова к каждому элементу исходного массива.
22
+ *
23
+ * ### Примеры использования
24
+ *
25
+ * 1. Применение функции обратного вызова к обычному массиву:
26
+ *
27
+ * ```js
28
+ * const array = [1, 2, 3];
29
+ * const callback = (value) => value * 2;
30
+ * const result = array_map(array, callback);
31
+ * console.log(result); // [2, 4, 6]
32
+ * ```
33
+ *
34
+ * 2. Применение функции обратного вызова к ассоциативному массиву:
35
+ *
36
+ * ```js
37
+ * const array = { a: 1, b: 2, c: 3 };
38
+ * const callback = (value) => value * 2;
39
+ * const result = array_map(array, callback);
40
+ * console.log(result); // { a: 2, b: 4, c: 6 }
41
+ * ```
42
+ *
43
+ * 3. Обработка значений, не являющихся массивами:
44
+ *
45
+ * ```js
46
+ * try {
47
+ * const result = array_map('not an array', (value) => value * 2);
48
+ * } catch (e) {
49
+ * console.error(e.message); // Параметр "value" должен быть массивом.
50
+ * }
51
+ * ```
52
+ *
53
+ * 4. Обработка значений, не являющихся функциями:
54
+ *
55
+ * ```js
56
+ * try {
57
+ * const result = array_map([1, 2, 3], 'not a function');
58
+ * } catch (e) {
59
+ * console.error(e.message); // Параметр "callback" должен быть функцией.
60
+ * }
61
+ * ```
62
+ *
63
+ * @param {object} value Исходный массив.
64
+ * @param {function} callback Функция обратного вызова, применяемая к каждому элементу массива.
65
+ * @returns {object} Возвращает новый массив, содержащий результаты применения функции обратного вызова к каждому элементу исходного массива.
66
+ * @throws {TypeError} Если параметры не являются массивом или функцией.
67
+ */
68
+ export default function array_map(value, callback) {
69
+ if (!is_array(value)) {
70
+ throw new TypeError('Параметр "value" должен быть массивом.');
71
+ }
72
+
73
+ if (!is_function(callback)) {
74
+ throw new TypeError('Параметр "callback" должен быть функцией.');
75
+ }
76
+
77
+ const result = is_list(value) ? Array.from(value) : array(value);
78
+
79
+ for (const [k, v] of Object.entries(value)) {
80
+ result[k] = callback(v, k);
81
+ }
82
+
83
+ return result;
84
+ }