javascript - Comment utiliser Lodash/Js pour regrouper des champs par objet
曾经蜡笔没有小新
曾经蜡笔没有小新 2017-05-19 10:45:12
0
1
668

objet json

[
    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:"香港特别行政区"
   }]


]

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

{
   "iniData":"S",
   "cityAreaList":[
        {
          "areaCode":"1853","areaId": 372, ...
        },
        {...}
    ]
}
曾经蜡笔没有小新
曾经蜡笔没有小新

répondre à tous(1)
Ty80

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

let array = [];
for(let city of citylist){
  array = array.contact(city.cityAreaList)
}

puis

_.groupBy(array,function(obj){
      return obj["firstLetter"];
  })

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

{
s:[
 {
   "areaCode":"1853","areaId": 372, ...},
 {...}
]
p:{
 ...
}
}

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

let keys = Object.keys(object);
let newArr = [];
for(let key of keys){
newArr.push(
{
   "iniData":key,
   "cityAreaList":object[key]
}
)
}

Ce nouvelArr est le résultat que vous souhaitez

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal