1.6.5 • Published 3 years ago
loppathsfind v1.6.5
- текущая библиотека содержит функцию
lopPathsFind()и константуISARR - функция
lopPathsFind()расширяет возможностиlodash.get(). Она позволяет получить значение элемента в глубине объекта, если он расположен в массиве (на любом из уровней объекта), и мы не знаем точно на каком из индексов этого массива (массивов) - функция
lopPathsFind()решает это за счёт пометки мест расположения массивов, специальной константойISARR. Путь с такими пометками называетсяlopPath - примеры
lopPath:- пример 1
`elems.${ISARR}.name`- эта запись говорит что
elemsэто массив, и мы хотим получить все значения ключаnameэлементов этого массива
- эта запись говорит что
- пример 2
`${ISARR}.${ISARR}.val`- здесь мы хотим искать значение
valобъекта вложенного в массив, который в свою очередь также вложен в массив
- здесь мы хотим искать значение
- пример 1
- функция
lopPathsFind()пробегает по всем элементам массивов пути в поисках указанного вами элемента пути - сигнатура функции
lopPathsFind():lopPathsFind(target: any, lopPath: string, predicate?: (val: any) => boolean): RetType[]- где
target- объект/массив значения из которого мы хотим получитьlopPath- lopPath-путьpredicate- (опционально) если вы хотите отбирать в итоговый результат не все элементы, а только те которые удовлетворяют этому предикатуRetType:interface RetType { /** путь к значению */ path: string, /** значение */ value: any /** существует ли указанный path; если не существует в `value` будет undefined */ isHas: boolean; }
- где
Примеры
пример 1, без 3-го параметра
import { ISARR, lopPathsFind } from 'loppathsfind'; const obj = { a: [ { b: 1 }, { c: 2 }, { c: 3 }, { c: 2 }, ], }; const lopPath = `a.${ISARR}.c`; const result = lopPathsFind(obj, lopPath); // result /* [ { path: 'a.0.c', value: undefined, isHas: false }, { path: 'a.1.c', value: 2, isHas: true }, { path: 'a.2.c', value: 3, isHas: true }, { path: 'a.3.c', value: 2, isHas: true } ] */пример 2, с 3-м параметром
import { ISARR, lopPathsFind } from 'loppathsfind'; const obj = { a: [ { b: 1 }, { c: 2 }, { c: 3 }, { c: 2 }, ], }; const lopPath = `a.${ISARR}.c`; const result = lopPathsFind(obj, lopPath, (val) => val === 2); // result /* [ { path: 'a.1.c', value: 2, isHas: true }, { path: 'a.3.c', value: 2, isHas: true } ] */также см. тесты -
/test/lopPathsFind-ts.test.ts
Разное
- используемый пакет-менеджер -
yarn - используется библиотека
tsdxдля билда текущей библиотеки
Что зачем
- root/babel.config.js - для Jest
- root/jest.config.js - для Jest
- root/tsconfig.json - для TypeScript