loppathsfind
v1.6.5
Published
analog of lodash path with support for arrays as path elements
Downloads
7
Readme
- текущая библиотека содержит функцию
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