recherche

Maison  >  Questions et réponses  >  le corps du texte

javascript - Comment utiliser Lodash/Js pour regrouper des champs par objet

objet json

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

<code>[

    dictprovinceVOList[{

    areaId: 13257

    cityAreaList:[

    {

        areaCode: "1853"

        areaId: 13265

        areaList:

        firstLetter:"S"

        langType:"zh_CN"

        latitude:22.124049

        longitude:

        113.559954

        parentId:13257

        pinYin:"shengfangjigetangqu"

        postCode:"820008"

        sortValue:8

        title:"圣方济各堂区"

    },

    {

        ...

    }]

    parentId: 0

    sortValue: 34

    title:"澳门特别行政区"

   },{

    areaId:13238

    cityAreaList:[

    {

        areaCode: "1853"

        areaId: 13265

        areaList:

        firstLetter:"S"

        langType:"zh_CN"

        latitude:22.124049

        longitude:

        113.559954

        parentId:13257

        pinYin:"shengfangjigetangqu"

        postCode:"820008"

        sortValue:8

        title:"圣方济各堂区"

    },{

        ...

    }]

    parentId:0

    sortValue:33

    title:"香港特别行政区"

   }]

 

 

]</code>

Obtenez les résultats suivants. . Le regroupement est basé sur le champ cityAreaList : firstLetter

1

2

3

4

5

6

7

8

9

<code>{

   "iniData":"S",

   "cityAreaList":[

        {

          "areaCode":"1853","areaId": 372, ...

        },

        {...}

    ]

}</code>

曾经蜡笔没有小新曾经蜡笔没有小新2866 Il y a quelques jours759

répondre à tous(1)je répondrai

  • PHP中文网

    PHP中文网2017-05-19 10:47:12

    lodash ne devrait pas avoir de fonction en une seule étape

    Mais il existe une fonction groupBy qui peut être utilisée pour regrouper

    Vous pouvez utiliser une boucle pour combiner la cityAreaList de toutes les villes dans un tableau

    1

    2

    3

    4

    <code>let array = [];

    for(let city of citylist){

      array = array.contact(city.cityAreaList)

    }</code>

    puis

    1

    2

    3

    <code>_.groupBy(array,function(obj){

          return obj["firstLetter"];

      })</code>

    L'objet renvoyé est à peu près de cette structure

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    <code>{

    s:[

     {

       "areaCode":"1853","areaId": 372, ...},

     {...}

    ]

    p:{

     ...

    }

    }</code>

    La clé de cet objet est le "iniData" que vous souhaitez
    Le reste est simple

    Utilisez Object.keys() pour obtenir toutes les clés de l'objet

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    <code>let keys = Object.keys(object);

    let newArr = [];

    for(let key of keys){

    newArr.push(

    {

       "iniData":key,

       "cityAreaList":object[key]

    }

    )

    }</code>

    Ce nouvelArr est le résultat que vous souhaitez

    répondre
    0
  • Annulerrépondre