@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.
- package/CHANGELOG.md +142 -1
- package/docs/helpers/array/array_chunk.md +80 -0
- package/docs/helpers/array/array_chunk_with_keys.md +81 -0
- package/docs/helpers/array/array_column.md +110 -0
- package/docs/helpers/array/array_combine.md +77 -0
- package/docs/helpers/array/array_count_values.md +71 -0
- package/docs/helpers/array/array_diff.md +97 -0
- package/docs/helpers/array/array_diff_assoc.md +81 -0
- package/docs/helpers/array/array_diff_key.md +81 -0
- package/docs/helpers/array/array_diff_uassoc.md +101 -0
- package/docs/helpers/array/array_diff_ukey.md +101 -0
- package/docs/helpers/array/array_fill.md +81 -0
- package/docs/helpers/array/array_fill_keys.md +73 -0
- package/docs/helpers/array/array_filter.md +79 -0
- package/docs/helpers/array/array_flip.md +70 -0
- package/docs/helpers/array/array_index_max.md +78 -0
- package/docs/helpers/array/array_index_min.md +78 -0
- package/docs/helpers/array/array_intersect.md +91 -0
- package/docs/helpers/array/array_intersect_assoc.md +91 -0
- package/docs/helpers/array/array_intersect_key.md +91 -0
- package/docs/helpers/array/array_intersect_uassoc.md +101 -0
- package/docs/helpers/array/array_intersect_ukey.md +101 -0
- package/docs/helpers/array/array_key_exists.md +73 -0
- package/docs/helpers/array/array_key_first.md +62 -0
- package/docs/helpers/array/array_key_last.md +62 -0
- package/docs/helpers/array/array_key_to_lower_case.md +57 -0
- package/docs/helpers/array/array_key_to_upper_case.md +57 -0
- package/docs/helpers/array/array_keys.md +62 -0
- package/docs/helpers/array/array_map.md +69 -0
- package/docs/helpers/array/array_merge.md +67 -0
- package/docs/helpers/array/array_merge_recursive.md +86 -0
- package/docs/helpers/array/array_pad.md +83 -0
- package/docs/helpers/array/array_pop.md +64 -0
- package/docs/helpers/array/array_product.md +62 -0
- package/docs/helpers/array/array_push.md +57 -0
- package/docs/helpers/array/array_rand.md +99 -0
- package/docs/helpers/array/array_reduce.md +77 -0
- package/docs/helpers/array/array_replace.md +85 -0
- package/docs/helpers/array/array_replace_recursive.md +87 -0
- package/docs/helpers/array/array_reverse.md +55 -0
- package/docs/helpers/array/array_search.md +74 -0
- package/docs/helpers/array/array_shift.md +64 -0
- package/docs/helpers/array/array_slice.md +65 -0
- package/docs/helpers/array/array_splice.md +103 -0
- package/docs/helpers/array/array_sum.md +55 -0
- package/docs/helpers/array/array_udiff.md +97 -0
- package/docs/helpers/array/array_udiff_assoc.md +101 -0
- package/docs/helpers/array/array_udiff_uassoc.md +88 -0
- package/docs/helpers/array/array_uintersect.md +101 -0
- package/docs/helpers/array/array_uintersect_assoc.md +102 -0
- package/docs/helpers/array/array_uintersect_uassoc.md +135 -0
- package/docs/helpers/array/array_unique.md +54 -0
- package/docs/helpers/array/array_unshift.md +58 -0
- package/docs/helpers/array/array_values.md +54 -0
- package/docs/helpers/array/array_walk.md +87 -0
- package/docs/helpers/array/array_walk_recursive.md +93 -0
- package/docs/helpers/array/count.md +54 -0
- package/docs/helpers/array/in_array.md +65 -0
- package/docs/helpers/array/natsort.md +60 -0
- package/docs/helpers/array/range.md +76 -0
- package/docs/helpers/array/shuffle.md +74 -0
- package/docs/helpers/array/sort.md +79 -0
- package/docs/helpers/is_char.md +84 -0
- package/docs/helpers/string/is_digit_char.md +70 -0
- package/docs/helpers/string/is_whitespace_char.md +70 -0
- package/docs/helpers/string/natcompare.md +69 -0
- package/docs/helpers/string/natcompare_numeric.md +70 -0
- package/docs/helpers.md +125 -1
- package/index.mjs +66 -1
- package/package.json +2 -1
- package/prettier.config.mjs +2 -1
- package/src/helpers/array/array_chunk.mjs +102 -0
- package/src/helpers/array/array_chunk_with_keys.mjs +102 -0
- package/src/helpers/array/array_column.mjs +131 -0
- package/src/helpers/array/array_combine.mjs +26 -0
- package/src/helpers/array/array_count_values.mjs +82 -0
- package/src/helpers/array/array_diff.mjs +77 -0
- package/src/helpers/array/array_diff_assoc.mjs +56 -0
- package/src/helpers/array/array_diff_key.mjs +56 -0
- package/src/helpers/array/array_diff_uassoc.mjs +76 -0
- package/src/helpers/array/array_diff_ukey.mjs +71 -0
- package/src/helpers/array/array_fill.mjs +108 -0
- package/src/helpers/array/array_fill_keys.mjs +90 -0
- package/src/helpers/array/array_filter.mjs +105 -0
- package/src/helpers/array/array_flip.mjs +58 -0
- package/src/helpers/array/array_index_max.mjs +82 -0
- package/src/helpers/array/array_index_min.mjs +82 -0
- package/src/helpers/array/array_intersect.mjs +71 -0
- package/src/helpers/array/array_intersect_assoc.mjs +67 -0
- package/src/helpers/array/array_intersect_key.mjs +67 -0
- package/src/helpers/array/array_intersect_uassoc.mjs +77 -0
- package/src/helpers/array/array_intersect_ukey.mjs +72 -0
- package/src/helpers/array/array_key_exists.mjs +83 -0
- package/src/helpers/array/array_key_first.mjs +73 -0
- package/src/helpers/array/array_key_last.mjs +74 -0
- package/src/helpers/array/array_key_to_lower_case.mjs +71 -0
- package/src/helpers/array/array_key_to_upper_case.mjs +71 -0
- package/src/helpers/array/array_keys.mjs +65 -0
- package/src/helpers/array/array_map.mjs +84 -0
- package/src/helpers/array/array_merge.mjs +95 -0
- package/src/helpers/array/array_merge_recursive.mjs +153 -0
- package/src/helpers/array/array_pad.mjs +105 -0
- package/src/helpers/array/array_pop.mjs +82 -0
- package/src/helpers/array/array_product.mjs +67 -0
- package/src/helpers/array/array_push.mjs +75 -0
- package/src/helpers/array/array_rand.mjs +129 -0
- package/src/helpers/array/array_reduce.mjs +90 -0
- package/src/helpers/array/array_replace.mjs +25 -0
- package/src/helpers/array/array_replace_recursive.mjs +109 -0
- package/src/helpers/array/array_reverse.mjs +62 -0
- package/src/helpers/array/array_search.mjs +104 -0
- package/src/helpers/array/array_shift.mjs +78 -0
- package/src/helpers/array/array_slice.mjs +99 -0
- package/src/helpers/array/array_splice.mjs +218 -0
- package/src/helpers/array/array_sum.mjs +60 -0
- package/src/helpers/array/array_udiff.mjs +91 -0
- package/src/helpers/array/array_udiff_assoc.mjs +71 -0
- package/src/helpers/array/array_udiff_uassoc.mjs +124 -0
- package/src/helpers/array/array_uintersect.mjs +72 -0
- package/src/helpers/array/array_uintersect_assoc.mjs +77 -0
- package/src/helpers/array/array_uintersect_uassoc.mjs +121 -0
- package/src/helpers/array/array_unique.mjs +77 -0
- package/src/helpers/array/array_unshift.mjs +64 -0
- package/src/helpers/array/array_values.mjs +57 -0
- package/src/helpers/array/array_walk.mjs +95 -0
- package/src/helpers/array/array_walk_recursive.mjs +104 -0
- package/src/helpers/array/count.mjs +57 -0
- package/src/helpers/array/in_array.mjs +67 -0
- package/src/helpers/array/natsort.mjs +62 -0
- package/src/helpers/array/range.mjs +121 -0
- package/src/helpers/array/shuffle.mjs +73 -0
- package/src/helpers/array/sort.mjs +69 -0
- package/src/helpers/is_char.mjs +54 -0
- package/src/helpers/string/is_digit_char.mjs +60 -0
- package/src/helpers/string/is_whitespace_char.mjs +54 -0
- package/src/helpers/string/natcompare.mjs +107 -0
- package/src/helpers/string/natcompare_numeric.mjs +131 -0
- package/tests/helpers/array/array_chunk.test.mjs +49 -0
- package/tests/helpers/array/array_chunk_with_keys.test.mjs +45 -0
- package/tests/helpers/array/array_column.test.mjs +87 -0
- package/tests/helpers/array/array_combine.test.mjs +41 -0
- package/tests/helpers/array/array_count_values.test.mjs +40 -0
- package/tests/helpers/array/array_diff.test.mjs +78 -0
- package/tests/helpers/array/array_diff_assoc.test.mjs +64 -0
- package/tests/helpers/array/array_diff_key.test.mjs +64 -0
- package/tests/helpers/array/array_diff_uassoc.test.mjs +73 -0
- package/tests/helpers/array/array_diff_ukey.test.mjs +77 -0
- package/tests/helpers/array/array_fill.test.mjs +47 -0
- package/tests/helpers/array/array_fill_keys.test.mjs +35 -0
- package/tests/helpers/array/array_filter.test.mjs +38 -0
- package/tests/helpers/array/array_flip.test.mjs +33 -0
- package/tests/helpers/array/array_index_max.test.mjs +41 -0
- package/tests/helpers/array/array_index_min.test.mjs +41 -0
- package/tests/helpers/array/array_intersect.test.mjs +65 -0
- package/tests/helpers/array/array_intersect_assoc.test.mjs +65 -0
- package/tests/helpers/array/array_intersect_key.test.mjs +65 -0
- package/tests/helpers/array/array_intersect_uassoc.test.mjs +76 -0
- package/tests/helpers/array/array_intersect_ukey.test.mjs +74 -0
- package/tests/helpers/array/array_key_exists.test.mjs +36 -0
- package/tests/helpers/array/array_key_first.test.mjs +29 -0
- package/tests/helpers/array/array_key_last.test.mjs +29 -0
- package/tests/helpers/array/array_key_to_lower_case.test.mjs +23 -0
- package/tests/helpers/array/array_key_to_upper_case.test.mjs +23 -0
- package/tests/helpers/array/array_keys.test.mjs +27 -0
- package/tests/helpers/array/array_map.test.mjs +32 -0
- package/tests/helpers/array/array_merge.test.mjs +37 -0
- package/tests/helpers/array/array_merge_recursive.test.mjs +65 -0
- package/tests/helpers/array/array_pad.test.mjs +48 -0
- package/tests/helpers/array/array_pop.test.mjs +29 -0
- package/tests/helpers/array/array_product.test.mjs +33 -0
- package/tests/helpers/array/array_push.test.mjs +31 -0
- package/tests/helpers/array/array_rand.test.mjs +59 -0
- package/tests/helpers/array/array_reduce.test.mjs +44 -0
- package/tests/helpers/array/array_replace.test.mjs +46 -0
- package/tests/helpers/array/array_replace_recursive.test.mjs +46 -0
- package/tests/helpers/array/array_reverse.test.mjs +31 -0
- package/tests/helpers/array/array_search.test.mjs +48 -0
- package/tests/helpers/array/array_shift.test.mjs +29 -0
- package/tests/helpers/array/array_slice.test.mjs +49 -0
- package/tests/helpers/array/array_splice.test.mjs +67 -0
- package/tests/helpers/array/array_sum.test.mjs +27 -0
- package/tests/helpers/array/array_udiff.test.mjs +95 -0
- package/tests/helpers/array/array_udiff_assoc.test.mjs +77 -0
- package/tests/helpers/array/array_udiff_uassoc.test.mjs +89 -0
- package/tests/helpers/array/array_uintersect.test.mjs +78 -0
- package/tests/helpers/array/array_uintersect_assoc.test.mjs +80 -0
- package/tests/helpers/array/array_uintersect_uassoc.test.mjs +122 -0
- package/tests/helpers/array/array_unique.test.mjs +27 -0
- package/tests/helpers/array/array_unshift.test.mjs +31 -0
- package/tests/helpers/array/array_values.test.mjs +27 -0
- package/tests/helpers/array/array_walk.test.mjs +48 -0
- package/tests/helpers/array/array_walk_recursive.test.mjs +53 -0
- package/tests/helpers/array/count.test.mjs +27 -0
- package/tests/helpers/array/in_array.test.mjs +52 -0
- package/tests/helpers/array/natsort.test.mjs +71 -0
- package/tests/helpers/array/range.test.mjs +51 -0
- package/tests/helpers/array/shuffle.test.mjs +42 -0
- package/tests/helpers/array/sort.test.mjs +60 -0
- package/tests/helpers/is_char.test.mjs +40 -0
- package/tests/helpers/string/is_digit_char.test.mjs +32 -0
- package/tests/helpers/string/is_whitespace_char.test.mjs +32 -0
- package/tests/helpers/string/natcompare.test.mjs +100 -0
- package/tests/helpers/string/natcompare_numeric.test.mjs +110 -0
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import array from '../array.mjs';
|
|
2
|
+
import empty from '../empty.mjs';
|
|
3
|
+
import is_array from '../is_array.mjs';
|
|
4
|
+
import is_function from '../is_function.mjs';
|
|
5
|
+
import is_list from '../is_list.mjs';
|
|
6
|
+
import is_null from '../is_null.mjs';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Фильтрует элементы массива с использованием функции обратного вызова.
|
|
10
|
+
*
|
|
11
|
+
* ### Описание
|
|
12
|
+
*
|
|
13
|
+
* Функция `array_filter` используется для фильтрации элементов массива с использованием функции обратного вызова.
|
|
14
|
+
* Она возвращает новый массив, содержащий только те элементы, для которых функция обратного вызова вернула `true`.
|
|
15
|
+
* Если функция обратного вызова не предоставлена, используется функция по умолчанию, которая удаляет пустые значения.
|
|
16
|
+
*
|
|
17
|
+
* ### Параметры
|
|
18
|
+
*
|
|
19
|
+
* - `value` (array): Исходный массив.
|
|
20
|
+
* - `callback` (function|null): Функция обратного вызова для фильтрации элементов. Если не указана, используется функция по умолчанию, которая удаляет пустые значения.
|
|
21
|
+
*
|
|
22
|
+
* ### Возвращаемое значение
|
|
23
|
+
*
|
|
24
|
+
* Возвращает новый массив, содержащий только те элементы, для которых функция обратного вызова вернула `true`.
|
|
25
|
+
*
|
|
26
|
+
* ### Примеры использования
|
|
27
|
+
*
|
|
28
|
+
* 1. Фильтрация массива с использованием функции обратного вызова:
|
|
29
|
+
*
|
|
30
|
+
* ```js
|
|
31
|
+
* const array = [1, 2, 3, 4, 5];
|
|
32
|
+
* const callback = (value) => value > 2;
|
|
33
|
+
* const result = array_filter(array, callback);
|
|
34
|
+
* console.log(result); // [3, 4, 5]
|
|
35
|
+
* ```
|
|
36
|
+
*
|
|
37
|
+
* 2. Фильтрация массива без функции обратного вызова (удаление пустых значений):
|
|
38
|
+
*
|
|
39
|
+
* ```js
|
|
40
|
+
* const array = [0, 1, false, 2, '', 3];
|
|
41
|
+
* const result = array_filter(array);
|
|
42
|
+
* console.log(result); // [1, 2, 3]
|
|
43
|
+
* ```
|
|
44
|
+
*
|
|
45
|
+
* 3. Фильтрация ассоциативного массива с использованием функции обратного вызова:
|
|
46
|
+
*
|
|
47
|
+
* ```js
|
|
48
|
+
* const array = { a: 1, b: 2, c: 3, d: 4 };
|
|
49
|
+
* const callback = (value, key) => value > 2;
|
|
50
|
+
* const result = array_filter(array, callback);
|
|
51
|
+
* console.log(result); // { c: 3, d: 4 }
|
|
52
|
+
* ```
|
|
53
|
+
*
|
|
54
|
+
* 4. Обработка значений, не являющихся массивами:
|
|
55
|
+
*
|
|
56
|
+
* ```js
|
|
57
|
+
* try {
|
|
58
|
+
* const result = array_filter('not an array');
|
|
59
|
+
* } catch (e) {
|
|
60
|
+
* console.error(e.message); // Параметр "value" должен быть массивом.
|
|
61
|
+
* }
|
|
62
|
+
* ```
|
|
63
|
+
*
|
|
64
|
+
* 5. Обработка значений, не являющихся функциями:
|
|
65
|
+
*
|
|
66
|
+
* ```js
|
|
67
|
+
* try {
|
|
68
|
+
* const result = array_filter([1, 2, 3], 'not a function');
|
|
69
|
+
* } catch (e) {
|
|
70
|
+
* console.error(e.message); // Параметр "callback" должен быть функцией.
|
|
71
|
+
* }
|
|
72
|
+
* ```
|
|
73
|
+
*
|
|
74
|
+
* @param {object} value Исходный массив.
|
|
75
|
+
* @param {function|null} callback Функция обратного вызова для фильтрации элементов. Если не указана, используется функция по умолчанию, которая удаляет пустые значения.
|
|
76
|
+
* @returns {object} Возвращает новый массив, содержащий только те элементы, для которых функция обратного вызова вернула `true`.
|
|
77
|
+
* @throws {TypeError} Если параметры не являются массивами или функциями.
|
|
78
|
+
*/
|
|
79
|
+
export default function array_filter(value, callback = null) {
|
|
80
|
+
if (!is_array(value)) {
|
|
81
|
+
throw new TypeError('Параметр "value" должен быть массивом.');
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
if (!is_function(callback) && !is_null(callback)) {
|
|
85
|
+
throw new TypeError('Параметр "callback" должен быть функцией.');
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
if (is_null(callback)) {
|
|
89
|
+
callback = (v) => !empty(v);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
if (is_list(value)) {
|
|
93
|
+
return value.filter(callback);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
const result = array({});
|
|
97
|
+
|
|
98
|
+
for (const [k, v] of Object.entries(value)) {
|
|
99
|
+
if (callback(v, k)) {
|
|
100
|
+
result[k] = v;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
return result;
|
|
105
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import is_array from '../is_array.mjs';
|
|
2
|
+
import array_combine from './array_combine.mjs';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Меняет местами ключи и значения в массиве.
|
|
6
|
+
*
|
|
7
|
+
* ### Описание
|
|
8
|
+
*
|
|
9
|
+
* Функция `array_flip` используется для обмена местами ключей и значений в массиве.
|
|
10
|
+
* Она возвращает новый массив, в котором ключи и значения поменяны местами.
|
|
11
|
+
*
|
|
12
|
+
* ### Параметры
|
|
13
|
+
*
|
|
14
|
+
* - `value` (object): Исходный массив.
|
|
15
|
+
*
|
|
16
|
+
* ### Возвращаемое значение
|
|
17
|
+
*
|
|
18
|
+
* Возвращает новый массив, в котором ключи и значения поменяны местами.
|
|
19
|
+
*
|
|
20
|
+
* ### Примеры использования
|
|
21
|
+
*
|
|
22
|
+
* 1. Обмен ключей и значений в обычном массиве:
|
|
23
|
+
*
|
|
24
|
+
* ```js
|
|
25
|
+
* const array = { a: 1, b: 2, c: 3 };
|
|
26
|
+
* const result = array_flip(array);
|
|
27
|
+
* console.log(result); // { 1: 'a', 2: 'b', 3: 'c' }
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* 2. Обработка пустого массива:
|
|
31
|
+
*
|
|
32
|
+
* ```js
|
|
33
|
+
* const array = {};
|
|
34
|
+
* const result = array_flip(array);
|
|
35
|
+
* console.log(result); // {}
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* 3. Обработка значений, не являющихся массивами:
|
|
39
|
+
*
|
|
40
|
+
* ```js
|
|
41
|
+
* try {
|
|
42
|
+
* const result = array_flip('not an array');
|
|
43
|
+
* } catch (e) {
|
|
44
|
+
* console.error(e.message); // Параметр "value" должен быть массивом.
|
|
45
|
+
* }
|
|
46
|
+
* ```
|
|
47
|
+
*
|
|
48
|
+
* @param {object} value Исходный массив.
|
|
49
|
+
* @returns {object} Возвращает новый массив, в котором ключи и значения поменяны местами.
|
|
50
|
+
* @throws {TypeError} Если параметр не является массивом.
|
|
51
|
+
*/
|
|
52
|
+
export default function array_flip(value) {
|
|
53
|
+
if (!is_array(value)) {
|
|
54
|
+
throw new TypeError('Параметр "value" должен быть массивом.');
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
return array_combine(Object.values(value), Object.keys(value));
|
|
58
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import empty from '../empty.mjs';
|
|
2
|
+
import is_array from '../is_array.mjs';
|
|
3
|
+
import is_list from '../is_list.mjs';
|
|
4
|
+
import is_nan from '../is_nan.mjs';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Возвращает максимальный индекс массива.
|
|
8
|
+
*
|
|
9
|
+
* ### Описание
|
|
10
|
+
*
|
|
11
|
+
* Функция `array_index_max` используется для получения максимального индекса массива.
|
|
12
|
+
* Она возвращает максимальный индекс для обычных массивов и ассоциативных массивов.
|
|
13
|
+
*
|
|
14
|
+
* ### Параметры
|
|
15
|
+
*
|
|
16
|
+
* - `value` (array): Исходный массив.
|
|
17
|
+
*
|
|
18
|
+
* ### Возвращаемое значение
|
|
19
|
+
*
|
|
20
|
+
* Возвращает максимальный индекс массива. Если массив пустой, возвращает `null`.
|
|
21
|
+
*
|
|
22
|
+
* ### Примеры использования
|
|
23
|
+
*
|
|
24
|
+
* 1. Получение максимального индекса обычного массива:
|
|
25
|
+
*
|
|
26
|
+
* ```js
|
|
27
|
+
* const array = [1, 2, 3];
|
|
28
|
+
* const result = array_index_max(array);
|
|
29
|
+
* console.log(result); // 2
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* 2. Получение максимального индекса ассоциативного массива:
|
|
33
|
+
*
|
|
34
|
+
* ```js
|
|
35
|
+
* const array = { a: 1, b: 2, c: 3 };
|
|
36
|
+
* const result = array_index_max(array);
|
|
37
|
+
* console.log(result); // null (нет числовых ключей)
|
|
38
|
+
* ```
|
|
39
|
+
*
|
|
40
|
+
* 3. Обработка пустого массива:
|
|
41
|
+
*
|
|
42
|
+
* ```js
|
|
43
|
+
* const array = [];
|
|
44
|
+
* const result = array_index_max(array);
|
|
45
|
+
* console.log(result); // null
|
|
46
|
+
* ```
|
|
47
|
+
*
|
|
48
|
+
* 4. Обработка значений, не являющихся массивами:
|
|
49
|
+
*
|
|
50
|
+
* ```js
|
|
51
|
+
* try {
|
|
52
|
+
* const result = array_index_max('not an array');
|
|
53
|
+
* } catch (e) {
|
|
54
|
+
* console.error(e.message); // Параметр "value" должен быть массивом.
|
|
55
|
+
* }
|
|
56
|
+
* ```
|
|
57
|
+
*
|
|
58
|
+
* @param {object} value Исходный массив.
|
|
59
|
+
* @returns {number|null} Возвращает максимальный индекс массива. Если массив пустой, возвращает `null`.
|
|
60
|
+
* @throws {TypeError} Если параметр не является массивом.
|
|
61
|
+
*/
|
|
62
|
+
export default function array_index_max(value) {
|
|
63
|
+
if (!is_array(value)) {
|
|
64
|
+
throw new TypeError('Параметр "value" должен быть массивом.');
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
if (empty(value)) {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
if (is_list(value)) {
|
|
72
|
+
return value.length - 1;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
for (const key of Object.keys(value).reverse()) {
|
|
76
|
+
if (!is_nan(Number(key))) {
|
|
77
|
+
return Number(key);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import empty from '../empty.mjs';
|
|
2
|
+
import is_array from '../is_array.mjs';
|
|
3
|
+
import is_list from '../is_list.mjs';
|
|
4
|
+
import is_nan from '../is_nan.mjs';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Возвращает минимальный индекс массива.
|
|
8
|
+
*
|
|
9
|
+
* ### Описание
|
|
10
|
+
*
|
|
11
|
+
* Функция `array_index_min` используется для получения минимального индекса массива.
|
|
12
|
+
* Она возвращает минимальный индекс для обычных массивов и ассоциативных массивов.
|
|
13
|
+
*
|
|
14
|
+
* ### Параметры
|
|
15
|
+
*
|
|
16
|
+
* - `value` (array): Исходный массив.
|
|
17
|
+
*
|
|
18
|
+
* ### Возвращаемое значение
|
|
19
|
+
*
|
|
20
|
+
* Возвращает минимальный индекс массива. Если массив пустой, возвращает `null`.
|
|
21
|
+
*
|
|
22
|
+
* ### Примеры использования
|
|
23
|
+
*
|
|
24
|
+
* 1. Получение минимального индекса обычного массива:
|
|
25
|
+
*
|
|
26
|
+
* ```js
|
|
27
|
+
* const array = [1, 2, 3];
|
|
28
|
+
* const result = array_index_min(array);
|
|
29
|
+
* console.log(result); // 0
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* 2. Получение минимального индекса ассоциативного массива:
|
|
33
|
+
*
|
|
34
|
+
* ```js
|
|
35
|
+
* const array = { a: 1, b: 2, c: 3 };
|
|
36
|
+
* const result = array_index_min(array);
|
|
37
|
+
* console.log(result); // null (нет числовых ключей)
|
|
38
|
+
* ```
|
|
39
|
+
*
|
|
40
|
+
* 3. Обработка пустого массива:
|
|
41
|
+
*
|
|
42
|
+
* ```js
|
|
43
|
+
* const array = [];
|
|
44
|
+
* const result = array_index_min(array);
|
|
45
|
+
* console.log(result); // null
|
|
46
|
+
* ```
|
|
47
|
+
*
|
|
48
|
+
* 4. Обработка значений, не являющихся массивами:
|
|
49
|
+
*
|
|
50
|
+
* ```js
|
|
51
|
+
* try {
|
|
52
|
+
* const result = array_index_min('not an array');
|
|
53
|
+
* } catch (e) {
|
|
54
|
+
* console.error(e.message); // Параметр "value" должен быть массивом.
|
|
55
|
+
* }
|
|
56
|
+
* ```
|
|
57
|
+
*
|
|
58
|
+
* @param {object} value Исходный массив.
|
|
59
|
+
* @returns {number|null} Возвращает минимальный индекс массива. Если массив пустой, возвращает `null`.
|
|
60
|
+
* @throws {TypeError} Если параметр не является массивом.
|
|
61
|
+
*/
|
|
62
|
+
export default function array_index_min(value) {
|
|
63
|
+
if (!is_array(value)) {
|
|
64
|
+
throw new TypeError('Параметр "value" должен быть массивом.');
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
if (empty(value)) {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
if (is_list(value)) {
|
|
72
|
+
return 0;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
for (const key of Object.keys(value)) {
|
|
76
|
+
if (!is_nan(Number(key))) {
|
|
77
|
+
return Number(key);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import array_uintersect from './array_uintersect.mjs';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Вычисляет пересечение между массивами с использованием стандартной функции сравнения значений.
|
|
5
|
+
*
|
|
6
|
+
* ### Описание
|
|
7
|
+
*
|
|
8
|
+
* Функция `array_intersect` используется для вычисления пересечения между массивами с использованием стандартной функции сравнения значений.
|
|
9
|
+
* Она возвращает массив, содержащий элементы из первого массива, которые присутствуют в других массивах.
|
|
10
|
+
*
|
|
11
|
+
* ### Параметры
|
|
12
|
+
*
|
|
13
|
+
* - `original_array` (array): Исходный массив.
|
|
14
|
+
* - `...arrays` (array): Массивы для сравнения.
|
|
15
|
+
*
|
|
16
|
+
* ### Возвращаемое значение
|
|
17
|
+
*
|
|
18
|
+
* Возвращает массив, содержащий элементы из первого массива, которые присутствуют в других массивах.
|
|
19
|
+
*
|
|
20
|
+
* ### Примеры использования
|
|
21
|
+
*
|
|
22
|
+
* 1. Сравнение массивов:
|
|
23
|
+
*
|
|
24
|
+
* ```js
|
|
25
|
+
* const original_array = { a: 1, b: 2, c: 3 };
|
|
26
|
+
* const array1 = { a: 1, b: 2 };
|
|
27
|
+
* const array2 = { b: 2, c: 3 };
|
|
28
|
+
* const result = array_intersect(original_array, array1, array2);
|
|
29
|
+
* console.log(result); // { a: 1, b: 2, c: 3 }
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* 2. Обработка пустых массивов:
|
|
33
|
+
*
|
|
34
|
+
* ```js
|
|
35
|
+
* const original_array = {};
|
|
36
|
+
* const array1 = {};
|
|
37
|
+
* const result = array_intersect(original_array, array1);
|
|
38
|
+
* console.log(result); // {}
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
41
|
+
* 3. Обработка значений, не являющихся массивами:
|
|
42
|
+
*
|
|
43
|
+
* ```js
|
|
44
|
+
* try {
|
|
45
|
+
* const result = array_intersect('not an array');
|
|
46
|
+
* } catch (e) {
|
|
47
|
+
* console.error(e.message); // Параметр "original_array" должен быть массивом.
|
|
48
|
+
* }
|
|
49
|
+
* ```
|
|
50
|
+
*
|
|
51
|
+
* 4. Сравнение массивов с различными типами данных:
|
|
52
|
+
*
|
|
53
|
+
* ```js
|
|
54
|
+
* const original_array = { a: 1, b: '2', c: true };
|
|
55
|
+
* const array1 = { a: 1, b: 2, d: false };
|
|
56
|
+
* const result = array_intersect(original_array, array1);
|
|
57
|
+
* console.log(result); // { a: 1 }
|
|
58
|
+
* ```
|
|
59
|
+
*
|
|
60
|
+
* @param {object} original_array Исходный массив.
|
|
61
|
+
* @param {...object} arrays Массивы для сравнения.
|
|
62
|
+
* @returns {object} Возвращает массив, содержащий элементы из первого массива, которые присутствуют в других массивах.
|
|
63
|
+
* @throws {TypeError} Если параметры не являются массивами.
|
|
64
|
+
*/
|
|
65
|
+
export default function array_intersect(original_array, ...arrays) {
|
|
66
|
+
return array_uintersect(
|
|
67
|
+
(a, b) => JSON.stringify(a) === JSON.stringify(b),
|
|
68
|
+
original_array,
|
|
69
|
+
...arrays,
|
|
70
|
+
);
|
|
71
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import array_intersect_uassoc from './array_intersect_uassoc.mjs';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Вычисляет пересечение между массивами с использованием стандартной функции сравнения для значений и ключей.
|
|
5
|
+
*
|
|
6
|
+
* ### Описание
|
|
7
|
+
*
|
|
8
|
+
* Функция `array_intersect_assoc` используется для вычисления пересечения между массивами с использованием стандартной функции сравнения для значений и ключей.
|
|
9
|
+
* Она возвращает массив, содержащий элементы из первого массива, которые присутствуют в других массивах.
|
|
10
|
+
*
|
|
11
|
+
* ### Параметры
|
|
12
|
+
*
|
|
13
|
+
* - `original_array` (array): Исходный массив.
|
|
14
|
+
* - `...arrays` (array): Массивы для сравнения.
|
|
15
|
+
*
|
|
16
|
+
* ### Возвращаемое значение
|
|
17
|
+
*
|
|
18
|
+
* Возвращает массив, содержащий элементы из первого массива, которые присутствуют в других массивах.
|
|
19
|
+
*
|
|
20
|
+
* ### Примеры использования
|
|
21
|
+
*
|
|
22
|
+
* 1. Сравнение массивов:
|
|
23
|
+
*
|
|
24
|
+
* ```js
|
|
25
|
+
* const original_array = { a: 1, b: 2, c: 3 };
|
|
26
|
+
* const array1 = { a: 1, b: 2 };
|
|
27
|
+
* const array2 = { b: 2, c: 3 };
|
|
28
|
+
* const result = array_intersect_assoc(original_array, array1, array2);
|
|
29
|
+
* console.log(result); // { a: 1, b: 2, c: 3 }
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* 2. Обработка пустых массивов:
|
|
33
|
+
*
|
|
34
|
+
* ```js
|
|
35
|
+
* const original_array = {};
|
|
36
|
+
* const array1 = {};
|
|
37
|
+
* const result = array_intersect_assoc(original_array, array1);
|
|
38
|
+
* console.log(result); // {}
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
41
|
+
* 3. Обработка значений, не являющихся массивами:
|
|
42
|
+
*
|
|
43
|
+
* ```js
|
|
44
|
+
* try {
|
|
45
|
+
* const result = array_intersect_assoc('not an array');
|
|
46
|
+
* } catch (e) {
|
|
47
|
+
* console.error(e.message); // Параметр "original_array" должен быть массивом.
|
|
48
|
+
* }
|
|
49
|
+
* ```
|
|
50
|
+
*
|
|
51
|
+
* 4. Сравнение массивов с различными типами данных:
|
|
52
|
+
*
|
|
53
|
+
* ```js
|
|
54
|
+
* const original_array = { a: 1, b: '2', c: true };
|
|
55
|
+
* const array1 = { a: 1, b: 2, d: false };
|
|
56
|
+
* const result = array_intersect_assoc(original_array, array1);
|
|
57
|
+
* console.log(result); // { a: 1 }
|
|
58
|
+
* ```
|
|
59
|
+
*
|
|
60
|
+
* @param {object} original_array Исходный массив.
|
|
61
|
+
* @param {...object} arrays Массивы для сравнения.
|
|
62
|
+
* @returns {object} Возвращает массив, содержащий элементы из первого массива, которые присутствуют в других массивах.
|
|
63
|
+
* @throws {TypeError} Если параметры не являются массивами.
|
|
64
|
+
*/
|
|
65
|
+
export default function array_intersect_assoc(original_array, ...arrays) {
|
|
66
|
+
return array_intersect_uassoc((a, b) => a === b, original_array, ...arrays);
|
|
67
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import array_intersect_ukey from './array_intersect_ukey.mjs';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Вычисляет пересечение между массивами с использованием стандартной функции сравнения для ключей.
|
|
5
|
+
*
|
|
6
|
+
* ### Описание
|
|
7
|
+
*
|
|
8
|
+
* Функция `array_intersect_key` используется для вычисления пересечения между массивами с использованием стандартной функции сравнения для ключей.
|
|
9
|
+
* Она возвращает массив, содержащий элементы из первого массива, которые присутствуют в других массивах.
|
|
10
|
+
*
|
|
11
|
+
* ### Параметры
|
|
12
|
+
*
|
|
13
|
+
* - `original_array` (array): Исходный массив.
|
|
14
|
+
* - `...arrays` (array): Массивы для сравнения.
|
|
15
|
+
*
|
|
16
|
+
* ### Возвращаемое значение
|
|
17
|
+
*
|
|
18
|
+
* Возвращает массив, содержащий элементы из первого массива, которые присутствуют в других массивах.
|
|
19
|
+
*
|
|
20
|
+
* ### Примеры использования
|
|
21
|
+
*
|
|
22
|
+
* 1. Сравнение массивов:
|
|
23
|
+
*
|
|
24
|
+
* ```js
|
|
25
|
+
* const original_array = { a: 1, b: 2, c: 3 };
|
|
26
|
+
* const array1 = { a: 1, b: 2 };
|
|
27
|
+
* const array2 = { b: 2, c: 3 };
|
|
28
|
+
* const result = array_intersect_key(original_array, array1, array2);
|
|
29
|
+
* console.log(result); // { a: 1, b: 2, c: 3 }
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* 2. Обработка пустых массивов:
|
|
33
|
+
*
|
|
34
|
+
* ```js
|
|
35
|
+
* const original_array = {};
|
|
36
|
+
* const array1 = {};
|
|
37
|
+
* const result = array_intersect_key(original_array, array1);
|
|
38
|
+
* console.log(result); // {}
|
|
39
|
+
* ```
|
|
40
|
+
*
|
|
41
|
+
* 3. Обработка значений, не являющихся массивами:
|
|
42
|
+
*
|
|
43
|
+
* ```js
|
|
44
|
+
* try {
|
|
45
|
+
* const result = array_intersect_key('not an array');
|
|
46
|
+
* } catch (e) {
|
|
47
|
+
* console.error(e.message); // Параметр "original_array" должен быть массивом.
|
|
48
|
+
* }
|
|
49
|
+
* ```
|
|
50
|
+
*
|
|
51
|
+
* 4. Сравнение массивов с различными типами данных:
|
|
52
|
+
*
|
|
53
|
+
* ```js
|
|
54
|
+
* const original_array = { a: 1, b: '2', c: true };
|
|
55
|
+
* const array1 = { a: 1, b: 2, d: false };
|
|
56
|
+
* const result = array_intersect_key(original_array, array1);
|
|
57
|
+
* console.log(result); // { a: 1, b: '2' }
|
|
58
|
+
* ```
|
|
59
|
+
*
|
|
60
|
+
* @param {object} original_array Исходный массив.
|
|
61
|
+
* @param {...object} arrays Массивы для сравнения.
|
|
62
|
+
* @returns {object} Возвращает массив, содержащий элементы из первого массива, которые присутствуют в других массивах.
|
|
63
|
+
* @throws {TypeError} Если параметры не являются массивами.
|
|
64
|
+
*/
|
|
65
|
+
export default function array_intersect_key(original_array, ...arrays) {
|
|
66
|
+
return array_intersect_ukey((a, b) => a === b, original_array, ...arrays);
|
|
67
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import array_uintersect_uassoc from './array_uintersect_uassoc.mjs';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Вычисляет пересечение между массивами с использованием пользовательской функции сравнения ключей.
|
|
5
|
+
*
|
|
6
|
+
* ### Описание
|
|
7
|
+
*
|
|
8
|
+
* Функция `array_intersect_uassoc` используется для вычисления пересечения между массивами с использованием пользовательской функции сравнения ключей.
|
|
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_uassoc(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_uassoc(key_compare_func, original_array, array1);
|
|
41
|
+
* console.log(result); // {}
|
|
42
|
+
* ```
|
|
43
|
+
*
|
|
44
|
+
* 3. Обработка значений, не являющихся массивами:
|
|
45
|
+
*
|
|
46
|
+
* ```js
|
|
47
|
+
* try {
|
|
48
|
+
* const result = array_intersect_uassoc('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_uassoc(key_compare_func, original_array, array1);
|
|
61
|
+
* console.log(result); // { a: 1 }
|
|
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_uassoc(key_compare_func, original_array, ...arrays) {
|
|
71
|
+
return array_uintersect_uassoc(
|
|
72
|
+
(a, b) => JSON.stringify(a) === JSON.stringify(b),
|
|
73
|
+
key_compare_func,
|
|
74
|
+
original_array,
|
|
75
|
+
...arrays,
|
|
76
|
+
);
|
|
77
|
+
}
|