Библиотека представляет собой ES6-модуль, экспортирующий объект passthrow
:
import passthrow from 'passthrow'
/* {
filterInterestingIndices(search, target) {
...
},
filterIndices(search, func) {
...
},
controlIndex(current) {
...
}
}
*/
На данный момент объект содержит три метода, целенаправленно созданных для работы с индексами массивов (не исключено, что вы сможете найти им не менее прагматичное применение)
Метод filterInterestingIndices
ищет в исследуемом массиве search
элементы целевого массива target
, возвращая массив индексов элементов search
, идентичных target
. Если элемент, принадлежащий target
, отсутствует в search
(не нашлось ни одного идентичного), результатом будет -1.
const filterInterestingIndices = passthrow.filterInterestingIndices;
let result = filterInterestingIndices(search, target);
Аргументами метода могут быть не только массивы, но и массивоподобные (ArrayLike) / итерируемые объекты (данные структуры преобразуются в массивы внутри метода).
Появление метода инспирировано реальным кейсом; репозиторий макетного прототипа кейса https://github.com/SerialEditor/passthrow_demonstration_page предоставляет пример практического применения метода.
Синтаксис:
let result = filterIndices(search, function(item, index, array) {
...
});
Функция func
вызывается по очереди для каждого элемента item
массива search
; метод возвращает массив индексов элементов search
, для которых вызов func
вернул true
.
const controlIndex = passthrow.controlIndex(init);
Вызов controlIndex
создает счетчик, позволяющий управлять начальным значением init
через замыкание с помощью функций возвращаемого вызовом controlIndex
массива:
controlIndex = [
function () {
return current;
},
function (value) {
current = value;
return current;
},
]
const result = passthrow.continuousSubArrays(arr)
Выбивается из первоначальной концепции пакета (но ведь всё движется, всё меняется, что непременно находит отражение в CHANGELOG). Возвращает массив со всеми доступными непрерывными подмассивами, взятыми из массива-аргумента