今天做一个对象数组去重的东西,结构如下:
如果arrv_Airpt_Cd和dpt_AirPt_Cd相同则认为是相同数据,需要去重。
一开始直接遍历数组对象进行操作,发现性能很差,上千条数据就会宕浏览器,
然后转换了下思路,直接遍历操纵对象的话会连续交换内存地址导致变卡(我猜测的,不知道原理,大佬们知道的话还请说明),所以选择了使用字符串数组代替原始数组,就能跑起来了,代码如下:
clearRepeat(){
let _this = this;
let olist = _this.flyList.data; //原始数据,对象型数组
let aresult = [olist[0].dpt_AirPt_Cd + '-' + olist[0].arrv_Airpt_Cd];
let oresult = [];
for(let item of olist){ //提取对象中的信息,以-间隔,生成字符串数组
oresult.push(item.dpt_AirPt_Cd + '-' + item.arrv_Airpt_Cd);
}
for(let item of oresult){ //去重后放入aresult
if(aresult.indexOf(item)<0 ) aresult.push(item);
}
_this.mapLines.data = aresult.map(function (val) { //转换
return {
from: val.split('-')[0],
to: val.split('-')[1]
};
})
oresult.length = 0;
aresult.length = 0;
},
请问还可以怎么优化?
当年话下
相关分类