loppathsfind
TypeScript icon, indicating that this package has built-in type declarations

1.6.5 • Public • Published
  • текущая библиотека содержит функцию lopPathsFind() и константу ISARR
  • функция lopPathsFind() расширяет возможности lodash.get(). Она позволяет получить значение элемента в глубине объекта, если он расположен в массиве (на любом из уровней объекта), и мы не знаем точно на каком из индексов этого массива (массивов)
  • функция lopPathsFind() решает это за счёт пометки мест расположения массивов, специальной константой ISARR. Путь с такими пометками называется lopPath
  • примеры lopPath:
    • пример 1
      `elems.${ISARR}.name`
      
      • эта запись говорит что elems это массив, и мы хотим получить все значения ключа name элементов этого массива
    • пример 2
      `${ISARR}.${ISARR}.val`
      
      • здесь мы хотим искать значение val объекта вложенного в массив, который в свою очередь также вложен в массив
  • функция 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

Package Sidebar

Install

npm i loppathsfind

Weekly Downloads

3

Version

1.6.5

License

MIT

Unpacked Size

33.9 kB

Total Files

18

Last publish

Collaborators

  • surrsoft