Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从阵列中删除重复的Cordinate_Javascript_Jquery_Google Maps - Fatal编程技术网

Javascript 从阵列中删除重复的Cordinate

Javascript 从阵列中删除重复的Cordinate,javascript,jquery,google-maps,Javascript,Jquery,Google Maps,我的数组包含:- (18.9992561589571, 72.83004879020154),(19.124614516591855, 72.87498710677028) 值,但为了删除重复值,我调用了“RemovedUpplicates”函数。但有时(在其他科迪纳茨,它工作正常,但有时失败),所以我不知道它出了什么问题。请帮帮我 以下是RemovedUpplicates函数:- function removeDuplicates(arr) { var n, y, x, i, r;

我的数组包含:-

(18.9992561589571, 72.83004879020154),(19.124614516591855, 72.87498710677028)
值,但为了删除重复值,我调用了“RemovedUpplicates”函数。但有时(在其他科迪纳茨,它工作正常,但有时失败),所以我不知道它出了什么问题。请帮帮我

以下是RemovedUpplicates函数:-

function removeDuplicates(arr) {
    var n, y, x, i, r;
    r = [];
    o: for (i = 0, n = arr.length; i < n; i++) {
        for (x = 0, y = r.length; x < y; x++) {
            if (r[x][0] == arr[i][0] && r[x][1] == arr[i][1]) {
                continue o;
            }
        }
        r.push(arr[i]);
    }
    return r;
}
预期产出:-

array:-   (18.9992561589571, 72.83004879020154),(19.124614516591855, 72.87498710677028)
获取:-

数组:-(18.9992561589571,72.83004879020154)

为了完整起见,我将如何实现它:

var arr = [[18.9992561589571, 72.83004879020154],
           [19.124614516591855, 72.87498710677028],
           [18.9992561589571, 72.83004879020154]];

function getUniqueTuples(tuples) {
    var a = [], h = {};
    tuples.forEach(function(t) {
        var k = t[0] + '|' + t[1];
        if (!(k in h)) {
            h[k] = null;
            a.push(t);
        }
    });
    return a;
}

arr = getUniqueTuples(arr);
console.log(arr);
。重点是用哈希查找重复项来代替数组查找-元组数组越大,速度就越好


现在让我们检查您的代码:

var a=[];
a.push("(18.9992561589571, 72.83004879020154)");
a.push("(19.124614516591855, 72.87498710677028)");
alert(removeDuplicates(a));
问题是:
removeDuplicates
实际上是用来处理数组数组的(数组数组应该由两个元素组成)。但是,原始数组由字符串组成,而不是数组

因此,当比较时,
[0]
[1]
属性实际上是这些字符串的第0个和第1个字符-
'(“
'1'
”),在这两种情况下都是相同的。换句话说,如果它们中的第一个数字相同,则认为坐标相等

解决方案?要么从一开始就使用数组,要么从字符串生成数组-最简单的方法是使用正则表达式,我想:

var patt = /[\d.]+/g;
var firstCoord = "(18.9992561589571, 72.83004879020154)";
var secondCoord = "(19.124614516591855, 72.87498710677028)"; 
a.push(firstCoord.match(patt), secondCoord.match(patt));

在寻求帮助时,人们是否有礼貌地清楚地格式化您的代码和问题中的其他信息。您认为代码可读吗?数据如何,清晰地显示?在您键入问题的下方有一个预览区域,一个完整的格式化工具工具栏,以及“提问”页面上的一个大橙色“如何格式化”框stion page.
(某物,某物)
不是数组。
[某物,某物]
是。调用时,您的函数工作得很好。可能是Ya的重复,您是对的,您的代码工作得很好,但我的代码中有什么错误?这是演示:-。因为此数组包含google map cordinates。更新了答案。正如我所说,您对类型混合感到困惑。可能您是对的。但这是我的动态数组y,这样我可以在我的函数中应用你的模式。为此,我修改了我的代码,请查看控制台,你会发现问题所在-
,因为每个
在JS中都是无效语法。使用
$.map
将一个数组(字符串数组)转换为另一个数组(两个元素数组的数组)更容易。就像。现在我知道了,在这个函数中,输入和输出类型必须是相同的,所以如果我们传递的数组具有“()”类型的符号,那么输出必须包含这些符号。我修改了我的代码。您也可以检查。这可能工作正常。
var patt = /[\d.]+/g;
var firstCoord = "(18.9992561589571, 72.83004879020154)";
var secondCoord = "(19.124614516591855, 72.87498710677028)"; 
a.push(firstCoord.match(patt), secondCoord.match(patt));