Как переписать вложенные циклы в lodash - PullRequest
0 голосов
/ 12 марта 2019

У меня есть уродливый цикл, который я хотел бы переписать в lodash.У меня есть массив (allData), который содержит массив (grp1), который содержит массив (grp2) и т. Д. Например:;

       (4) [grp, grp, grp, grp]  //the allData Array

        0: grp                   // eg the 0 pointer
           grp1: Array(4)        // have grp1 Array in it
           ..
           0: grp1               // eg the 0 pointer
              grp2: Array(4)     // have grp1 Array in it
              ..
              0: grp3 {}         // grp3 have now the id
              1: grp3
                 id: (...)
                 color: (...)

Я пишу цикл for и вложил его.Это работает, но по моему мнению код ужасен.

   for (let grp1 of allData) {
        for (let grp2 of grp1.getIdsForGrp1()) {
            for (let grp3 of grp2.getIdsForGrp2()) {
               if searchID === grp3.id {
                return grp3.id
                 }
            }
        }
    }

Можно ли переписать его с помощью lodash?

1 Ответ

1 голос
/ 13 марта 2019

Сложно дать ответ, основываясь только на неполных данных, но вы можете захотеть сделать что-то вроде

const _ = require(lodash);

_(allData).flattenDeep().find(({id}) => id === searchID);

Предполагается, что поле 'id' уникально на запрошенном уровне (grp3) и отсутствует на первых двух уровнях (grp1 и grp2).

Надеюсь, это поможет.

...