【发布时间】:2020-02-27 19:47:54
【问题描述】:
请阅读:我知道这感觉就像 Stack Overflow 上的回答令人作呕,但我发誓我找不到好的答案。 Besides, marking this as "Possible duplicate" would be too meta!
我有一个特定顺序的值矩阵(在 javascript 中):
[[1,2], [1,2], [3,4], [5,6] [5,6] ]
但是我最近了解到Google charts crashes when there are identical rows。我需要删除重复项;但是,该数组相当大,我无法承受幼稚实现的二次时间。
通常,如果每个行都是可散列的,我会将它们添加到字典 { } 以查看我已经看到的;但是,javascript 不允许对数组进行散列处理。
最好的方法是什么?我想我可以将每一行的数组转换为一个字符串并将其用作键,但这感觉就像一个非常肮脏(并且可能很慢)的黑客攻击。我真的很喜欢你的建议。
【问题讨论】:
-
当您说“按特定顺序”时,这是否意味着您知道数组已排序?如果是,排序顺序是什么?
-
你的数组是从哪里来的?你能在创作时这样做吗?
-
@AbrahamP 它没有排序(它是从 XML 文件中提取的)。保持当前顺序很重要,因为它不一定是函数,因此有时可能会向后移动。
-
从 XML 解析后,使用您自己提到的 [].toString() 方法创建哈希。 XML 解析足够慢,这根本不会显着增加,但您可以创建一个 jsperf.com 测试(并在此处链接到它以供后代使用)。似乎最好在那个时候做,当你完成整个系列的时候。我不会担心速度 - 任何其他方法都会花费您更多,因为您将第二次迭代所有这些。
-
您能否提供有关数据大小的更多信息?有多少行:数千、一万、数百万?每行平均多长时间?
标签: javascript arrays duplicate-removal