gpt4 book ai didi

JavaScript - 有条件地查找和删除重复项

转载 作者:行者123 更新时间:2023-11-30 15:04:00 25 4
gpt4 key购买 nike

目前我正在从设备获取坐标(纬度、经度)并将它们存储在一个数组中,如下所示:

 [35.23223,-5.293222]

但是,有几次这些坐标会重复(也许设备发送了相同的坐标,等等......)

为此,我实现了以下内容:

 var uniqueCoords = [Array.from(new Set(coords))];

在每次调用时,挖掘现有数组并删除任何重复的坐标。

但是,这会导致严重的问题,尤其是在具有(例如)新纬度和旧经度(即 [35.23223,-5.319399])或反之亦然的情况下。

在这个特定的例子中,uniqueCoords 将深入数组,发现 35.23223 是重复的并删除它,它将单独留下 -5.319399,通过旅程的结束可能会结束:

[35.23223,-5.293222,-5.319399]

我在这里想要的是仅当 lat & long 对与数组中已有的一对完全相同时才删除 (lat/long)。

当前代码:

    this.storage.get('route').then((route) => {

let uniqueCoords: any = [Array.from(new Set(route))];

uniqueCoords.push(latLng.lat, latLng.lng);
this.storage.set('routeTaken', uniqueCoords);

}).catch((error) => {
this.presentAlert(error)
})

原始数据数组:

   [35.7790733,-5.8453983,35.779335,-5.8465283,35.779705,-5.84782,35.7787533,-5.8482083,35.7780167,-5.8491983,35.77782,-5.8504883,35.7774783,-5.8518267,35.776955,-5.852945,35.7765,-5.8541383,35.7761667,-5.855425,-5.8566467,35.77628,-5.8579367,35.7763233,-5.8588633,35.776435,-5.8591367,35.7767667,-5.8594817,35.7776267,-5.8586933,35.7785467,-5.8577233,-5.8585467,35.77949,-5.8597567,35.7797183,-5.86081,35.7805917,-5.8606533,35.7817533,-5.8606867,35.7826217,-5.8618667,35.78295,-5.8636367,35.7834217,-5.8643667]

最佳答案

您可以加入坐标并在唯一化后拆分它们。

var coordinates = [[35.23223, -5.293222], [35.23223, -5.319399], [35.23223, -5.319399]],
unique = Array.from(new Set(coordinates.map(a => a.join('|'))), s => s.split('|').map(Number));

console.log(unique);
.as-console-wrapper { max-height: 100% !important; top: 0; }

如果您获取一个点的数组,例如 [35.23223, -5.293222],您可以将一个对象插入到该点中。具有相同坐标的另一个 pont 生成一个新对象,该对象不等于前一个数组。为了使两者相等,您需要对数组进行一些字符串化处理。这可能是 JSON字符串,或者更简单的一些,比如用分隔符连接。


与单个数组中的连续坐标相同。

var coordinates = [35.23223, -5.293222, 35.23223, -5.319399, 35.23223, -5.319399],
unique = Array.from(new Set(coordinates
.reduce((r, a, i) => (i % 2 ? r[r.length - 1].push(a) : r.push([a]), r), [])
.map(a => a.join('|'))), s => s.split('|').map(Number));

console.log(unique);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于JavaScript - 有条件地查找和删除重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46083783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com