请教关于这个对象数组去重的优化?

今天做一个对象数组去重的东西,结构如下:

https://img1.mukewang.com/5c32f7430001153403850845.jpg

如果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;                

        },

请问还可以怎么优化

倚天杖
浏览 408回答 1
1回答

当年话下

根据 item.dpt_AirPt_Cd 和 arrv_Airpt_Cd 为条件去重,返回去重后的数组var fnDuplicateRemover = function(list) {&nbsp; &nbsp; var newlist = [], hash = {};&nbsp; &nbsp; for (var i = 0,list_length=list.length; i < list_length; i++) {&nbsp; &nbsp; &nbsp; &nbsp; var item = list[i];&nbsp; &nbsp; &nbsp; &nbsp; var key = item.dpt_AirPt_Cd + '/' + item.arrv_Airpt_Cd;&nbsp; &nbsp; &nbsp; &nbsp; if (!hash[key]) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; newlist.push(hash[key] = item);&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }&nbsp; &nbsp; return newlist;};
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript