【发布时间】:2015-12-30 21:10:19
【问题描述】:
我有一个散列数组,每个散列包含一个超过 100,000 多个元素的大数组。
我编写了这个方法来删除每个内部数组中的重复项,只保留一个元素的副本,但遗憾的是,由于数组 - 运算符是好贵。
我试图减少的数据结构如下所示:
[{regex: "st.+", results: ["string1", "string2", "strong"]},
{regex: "string.+", results: ["string1", "string2"]}]
为了澄清,:regex 是一个用于从大型数组中查找字符串的正则表达式。这就是为什么相似的正则表达式会导致数组之间出现重复值的原因。
def uniqify(arr)
# This loops over an arry of arrays and compares each
# array to the next, keeping only the unique values in each array
i = 0
while i < arr.length
a = arr[i][:results]
j = i + 1
while j < arr.length
b = arr[j][:results]
arr[j][:results] = b - a
j += 1
end
i += 1
end
arr
end
我的示例数据的预期输出应该是:
[{regex: "st.+", results: ["string1", "string2", "strong"]},
{regex: "string.+", results: []}]
我怎样才能使这个循环功能更好?
【问题讨论】:
-
只是为了澄清一下,对于我的用途,哪个数组具有唯一值并不重要,重要的是每个值在整个数组数组中表示一次。
-
还需要保留数组组,还是可以用一维数组来表示唯一值?
-
我仍然必须保持组中的唯一值。这是因为不与任何其他数组共享的唯一值与我必须关联此数据的哈希相关。
-
在处理这么多数据时,某种数据库不是更合适吗?
-
为了帮助潜在的回答者,您需要显示您预期的输出数组是什么。您还需要编写一些基准测试来测试实现代码的各种方式。认为您可以编写比内置
-更快的东西可能不是一个好的假设,基准会显示。
标签: arrays ruby multidimensional-array unique