Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.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 从矩阵中删除重复的行_Javascript_Arrays_Duplicate Removal - Fatal编程技术网

Javascript 从矩阵中删除重复的行

Javascript 从矩阵中删除重复的行,javascript,arrays,duplicate-removal,Javascript,Arrays,Duplicate Removal,请阅读:我知道这感觉就像是在堆栈溢出时回答的令人恶心的问题,但我发誓我找不到好的答案 我有一个特定顺序的值矩阵(javascript): [1,2],, [1,2], [3,4], [5,6] [5,6]] 不过我最近才知道。我需要删除副本;然而,这个数组相当大,我负担不起简单实现的二次时间 通常,如果每行都是可散列的,我会将它们添加到字典{}中,以查看我已经看到的内容;但是,javascript不允许对数组进行散列 最好的方法是什么?我想我可以将每一行的数组转换成一个字符串,并将其用作键,但这

请阅读:我知道这感觉就像是在堆栈溢出时回答的令人恶心的问题,但我发誓我找不到好的答案

我有一个特定顺序的值矩阵(javascript):

[1,2],, [1,2], [3,4], [5,6] [5,6]]

不过我最近才知道。我需要删除副本;然而,这个数组相当大,我负担不起简单实现的二次时间

通常,如果每行都是可散列的,我会将它们添加到字典
{}
中,以查看我已经看到的内容;但是,javascript不允许对数组进行散列


最好的方法是什么?我想我可以将每一行的数组转换成一个字符串,并将其用作键,但这感觉像是一个相当肮脏(而且可能很慢)的攻击。我真的很喜欢你的建议

您可以使用Set和JSON Stringify/Parse轻松删除重复项。因此,这种方法将保持矩阵的顺序

const array = [[1, 2],[1, 2],[3, 4],[5, 6],[5, 6]];
const set = new Set(array.map(JSON.stringify));
const arr = [...set].map(JSON.parse);

console.log(arr);// output : [[1,2], [3,4], [5,6]]


当您说“按特定顺序”时,这是否意味着您知道数组已排序?如果是的话,什么是巫师?你的阵法来自哪里?你能在创建时这样做吗?@AbrahamP它没有排序(它是从XML文件中提取的)。保持当前顺序很重要,因为它不一定是函数,所以有时可能会向后移动。从XML解析时,使用您自己提到的[].toString()方法创建哈希。XML解析速度足够慢,这根本不会显著增加,但您可以创建一个jsperf.com测试(并链接到此处供后代使用)。似乎最好是在那一点上,当你通过整个集无论如何。我不会担心速度-任何其他方法都会花费您更多,因为您将第二次迭代所有这些方法。您能提供更多关于数据大小的信息吗?有多少行:千行,万行,百万行?每行平均多长?