如果PUSH的数组为全局变量,尤其是定时刷新,会不断的进行数组叠加,影响数据的使用。
function getToolTip0() { $.ajax({ type: 'get', async: false, data: { //气泡信息阅读后,自动销毁; }, url: './json/scatter.json', dataType: "json", success: function (result) { tipData0 = result.data; //当前气泡的数据; for (var i = 0; i < tipData0.length; i++) { communityData0.push({ name: tipData0[i].areaName, value: [tipData0[i].areaLon, tipData0[i].areaLat, tipData0[i].areaId] }) } }, error: function (err) { console.log(err + "图表请求数据失败!"); } }); return tipData0, communityData0; } getToolTip0();
解决方案:
1、success返回时,清空数组,然后再PUSH.
success: function (result) { tipData0 = result.data; //清空全局数组变量,防止多次刷新叠加; communityData0 = []; //当前气泡的数据; for (var i = 0; i < tipData0.length; i++) { communityData0.push({ name: tipData0[i].areaName, value: [tipData0[i].areaLon, tipData0[i].areaLat, tipData0[i].areaId] }) } },
2、数组去重:
//全局变量数据对象去重函数; function getArr(arr) { var result = []; var obj = {}; for (var i = 0; i < arr.length; i++) { if (!obj[arr[i].name]) { result.push(arr[i]); obj[arr[i].name] = true; } } return result; }
var arr = [ { "name": "营子社区", "value": [ "120.388081", "36.192447", "1" ] }, { "name": "华泰社区", "value": [ "120.392194", "36.194542", "2" ] }, { "name": "营子社区", "value": [ "120.388081", "36.192447", "1" ] }, { "name": "华泰社区", "value": [ "120.392194", "36.194542", "2" ] } ]; console.log(getArr(arr))
Done!