在做小程序的动态行程的时候,遇到一个数据处理的问题。景点之间有辆车信息。就选离景点最近的一辆车显示。数据格式如下
var array=[
{
type: 1,
name: "吞白古茹日追",
orignId: 217,
},
{
terminalName: "藏GL0257",
touristNum: 8,
__res_type__: "BUS",
NextorignId:231,
},
{
terminalName: "藏GL0258",
touristNum: 9,
__res_type__: "BUS",
NextorignId:231
},
{
terminalName: "藏GL0232",
touristNum: 9,
__res_type__: "BUS",
NextorignId:231
},
{
type: 1,
name: "达林南峰画屏观景点",
orignId: 231,
},
{
terminalName: "藏GL0259",
touristNum: 9,
__res_type__: "BUS",
NextorignId:234
},
{
terminalName: "藏GL0260",
touristNum: 9,
__res_type__: "BUS",
NextorignId:234
},
{
type: 1,
name: "索宋村",
orignId: 234,
},
{
type: 1,
name: "索松第一观景平台",
orignId: 235,
},
]
//返回的结果
var result=[]
//标记景点或者显示车辆
var key=0
//临时存数据
var temp=[]
for(var i = 0; i < array.length; i++){
var item=array[i]
if(item.type){
//每次遇到景点前面有车的情况都把原来的temp里面的数据都push到result
if(key>=1){
result.push(temp)
}
key=0
temp=[]
temp.push(item)
result.push(temp)
temp=[]
}else {
key=key+1
temp.push(item)
}
}
console.log(result)
//第二种方法
//暂存的
var arr = [];
//结果
var newarr = [];
//是否车
var v = false;
for(var i = 0; i < array.length; i++){
let item=array[i]
if(item.type){
if(v){
//景点
newarr.push(arr);
v=false;
arr = []
arr.push(item)
newarr.push(arr)
arr=[]
}else{
arr.push(item)
newarr.push(arr)
arr = []
}
}else{
//车辆
arr.push(item)
v = true
}
}
result= [
[
{
type: 1,
name: "吞白古茹日追",
orignId: 217,
}
]
,
[
{
terminalName: "藏GL0257",
touristNum: 8,
__res_type__: "BUS",
},
{
terminalName: "藏GL0258",
touristNum: 9,
__res_type__: "BUS",
},
{
terminalName: "藏GL0232",
touristNum: 9,
__res_type__: "BUS",
}
],
[
{
type: 1,
name: "达林南峰画屏观景点",
orignId: 231,
}
],
[
{
terminalName: "藏GL0259",
touristNum: 9,
__res_type__: "BUS",
}
],
[
{
type: 1,
name: "索宋村",
orignId: 234,
}
],
[
{
type: 1,
name: "索松第一观景平台",
orignId: 235,
}
]
]
大功告成!!!