如何对数组的对象进行分组和分离

如何对来自服务器的数组对象进行分组和分离。像这样的数组:(MOVINGSTATEs这表示停止和m移动。XPOINT 和 YPOINT 这表示汽车的经纬度。)


[{MOVINGSTATE: "s",XPOINT:53.9172866,YPOINT: 26.518275},

{MOVINGSTATE: "s",XPOINT: 53.9172866,YPOINT: 26.518275},

{MOVINGSTATE: "m",XPOINT: 54.0215383,YPOINT: 26.5275599},

{MOVINGSTATE: "m",XPOINT: 54.0102666,YPOINT: 26.4989583},

{MOVINGSTATE: "s",XPOINT: 54.0016599,YPOINT: 26.5478316},..]

我想如果一些MOVINGSTATEContinuous sgoto new array 以及何时MOVINGSTATE更改为mgoto new array 并再次MOVINGSTATE更改为s goto new array。另一个主数组的所有这些新数组对象。我用loadash


var aaa = _loadash.groupBy(props,'MOVINGSTATE')

但输出这个:


{m:Array(2),s:Array(3)}

我想要这样的输出:


[

 [

  {MOVINGSTATE: "s",XPOINT:53.9172866,YPOINT: 26.518275},

  {MOVINGSTATE: "s",XPOINT: 53.9172866,YPOINT: 26.518275}

  ],

 [

  {MOVINGSTATE: "m",XPOINT: 54.0215383,YPOINT: 26.5275599},

  {MOVINGSTATE: "m",XPOINT: 54.0102666,YPOINT: 26.4989583}

 ],

 [

  {MOVINGSTATE: "s",XPOINT: 54.0016599,YPOINT: 26.5478316}

 ]

]

谢谢你的帮助


繁花不似锦
浏览 167回答 1
1回答

慕莱坞森

尝试这个:let arr = [{MOVINGSTATE: "s",XPOINT:53.9172866,YPOINT: 26.518275},{MOVINGSTATE: "s",XPOINT: 53.9172866,YPOINT: 26.518275},{MOVINGSTATE: "m",XPOINT: 54.0215383,YPOINT: 26.5275599},{MOVINGSTATE: "m",XPOINT: 54.0102666,YPOINT: 26.4989583},{MOVINGSTATE: "s",XPOINT: 54.0016599,YPOINT: 26.5478316}];  let result =  arr.reduce( (accumulator, cur) => {    const key = cur["MOVINGSTATE"];    const keyExists = accumulator.find(obj => obj.key === key);    if (!keyExists) {      accumulator.push({key,value:[cur]});      return accumulator;          } else if(accumulator[accumulator.length -1] && accumulator[accumulator.length -1].key === key){        accumulator[accumulator.length -1].value.push(cur);        return accumulator;    } else {      accumulator.push({key,value:[cur]});      return accumulator;     }          }, [])  .map(obj => obj.value)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript