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



如何分组和 分离来自服务器的数组的对象。 数组像这样: (移动状态s这意味着停止和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},..]

我想如果某些连续MOVINGSTATEs转到新数组,并且当MOVINGSTATE更改为m转到新数组并再次更改为s转到新数组MOVINGSTATE。 另一个主数组的所有这些新数组对象。 我使用负载灰

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}
]
]

如何做到这一点,感谢您的帮助

试试这个:

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)

最新更新