ES5数组去重(可去重对象和数组和Reg和Function)

先说一下,当初做这个的初衷:
其实是最近在一个高德地图的项目。我们有一个需求是用户可以看到自己的行动轨迹。
这里的行动轨迹其实就是在地图上画折线。new AMap.Polyline()类似的这样的一个实例。重点来了,该实例里面有一个需要传参的是一个对象,对象里面有一个path属性,他需要传的是以经纬度为数组的一个二维数组,然后他再绘制成折线。例如:var lineArr = [[116.478800,39.997461],[116.478935,39.997561],[116.478935,39.997761],[116.478939,39.997825],[116.478912,39.998549],[116.478912,39.998549],[116.478998,39.998555],[116.478998,39.998555],[116.479282,39.99856],[116.479658,39.998528],[116.480151,39.998453],[116.480784,39.998302],[116.480784,39.998302],[116.481149,39.998184],[116.481573,39.997997]]
然后我们这边需求是隔60秒获取用户当前的经纬度。然后我前端这边做了一层过滤,判断用户是否没动,没动的话 当前经纬度不传到数据库去。但是有一个问题。小弟本地使用的是google浏览器,用的是IP定位。就是如果用户重新打开应用他当前的经纬度还是不变的话,再后台没有做校验的情况下,后台数据其实是有重复。所以我这边进行了二维数组去重。
起初想了一个下午,没想到好的解决的办法。只停留在ES6的new Set可以实现数组去重,但不知道它的原理。而且new Set也有局限性就是无法去重子项为复合数据类型的。后来看到一篇文章,茅塞顿开。转而我再进行了加工,使得更多的数据类型可以去重。



    
        
        
    
    
        
    

多说点。
如果你要做高德地图web项目要小心以下几个坑点:
1.ios10及以上,以及谷歌浏览器必须将网站升到https才能精确定位。
2.JS-API的Geolocation定位插件,融合了HTML5 Geolocation定位接口、精确IP定位服务,以及安卓定位sdk定位。其中与安卓定位sdk的结合使用适用于开发安卓系统的H5应用,需同时使用安卓定位sdk和JS-API。
3.高德地图无法兼容所有浏览器。例如上次用华为浏览器测试,地图就没法渲染。
4.当使用浏览器的IP定位时,并且自身连着WIFI情况下,Geolocation定位插件会根据当前用户活跃多的区域进行定位。
(其实这就是部分网上网友反映的定位不准,另一部分指的是真机每次定位的时候的偏差,可能就几十米样子。)

说得太多了。
因为数组去重是借鉴别人的,所以这里贴一下别人的网址。还有贴一下高德的。
https://www.cnblogs.com/think...
https://lbs.amap.com/api/java...

你可能感兴趣的:(javascript)