Tag: arrays

在数组Ruby中找到一个重复项

我试图在1到1000000之间的字符串数组中找到重复值。 但是,使用我的代码,我得到输出作为所有加倍的条目。 所以,例如,如果我有[1,2,3,4,3,4] ,它给出了3 4 3 4而不是3 4的输出。 这是我的代码: array = [gets] if array.uniq.length == array.length puts “array does not contain duplicates” else puts “array does contain duplicates” print array.select{ |x| array.count(x) > 1} end 此外,每次我测试我的代码时,我都必须将数组定义为array = [1,2,3,4,5,3,5] 。 puts工作但但是当我使用array [gets]时它不会打印。 有人可以帮我解决这两个问题吗?

只需一个级别就可以将数组推送到ruby上的数组中

鉴于: a = [[1,”a”],[2,”b”]] b = [[3,”c”],[4,”d”]] 我想把a变成[[1,”a”],[2,”b”][3,”c”],[4,”d”]] 。 没有+怎么办呢? 它创建了一个我想避免的新数组。 (a < [1, “a”, 2, “b”, [3, “c”], [4, “d”]]

Ruby – 列表减去

我有两个清单 a = [1, 2, 3, 4, 1, 2] b = a.uniq # b = [1, 2, 3, 4] c = a – b 结果得到c = [] 我期望结果c = [1, 2] 我怎么能得到这个?

如何在Ruby中对数组进行分组和求和?

我有一个像这样的数组: ar = [[5, “2014-01-27”], [20, “2014-01-28”], [5, “2014-01-28”], [10, “2014-01-28”], [15, “2014-01-29”], [5, “2014-01-29”], [5, “2014-01-30”], [10, “2014-01-30”], [5, “2014-01-30”]] 我最终需要做的是按日期对数组项进行分组,并总结每个子数组的第一项中的数字。 所以输出将是这样的: [[5, “2014-01-27”], [35, “2014-01-28”], [20, “2014-01-29”], [20, “2014-01-30”]]

参数化数组#uniq(即uniq_by)

如果不是从数组中删除重复元素,我想删除具有共同特定属性的元素,该怎么办? 具体来说,我想从具有重复“精华”的数组中删除所有字符串,其中精华定义如下: class String def essence downcase.gsub(‘&’, ‘and’).gsub(/[^a-z0-9]/, ”) end end 我想要这样的东西: [‘a’, ‘A’, ‘b’].uniq_by(&:essence) # => [‘a’, ‘b’] (or [‘A’, ‘b’]; I don’t really care) 实现这一目标的最佳方法是什么?

合并数组,如果它们包含一个或多个相同的值

我有一个数组数组: a = [[1, 2, 3], [3, 4, 5], [6, 7, 8], [8, 9], [9, 10]] 我想合并包含一个或多个相同值的所有数组。 所以: a = [[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]] 我正在努力为此找到一个简洁的方法。 有任何想法吗?

如果条件,从ruby数组中获取值

我正在使用以下代码映射数组: url = “http://www.cnn.com” page = Mechanize.new.get(url) images_url = page.images.map{|img| img.url.to_s if (img.width.to_i > 200)} 我在控制台中得到了这个结果: [nil, “http://sofzh.miximages.com/ruby-on-rails/110929092349-nelson-mandela-t1-main.jpg”, nil, nil, nil, nil, nil, “http://sofzh.miximages.com/ruby-on-rails/120225123812-syria-mani-2-c1-main.jpg”, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, […]

Ruby中的双方括号

给出以下代码: def map(char, charmap) unless map = charmap[[char]] unless map = charmap[[char, c = input.getc]] input.ungetc(c) if c map = ” end end map end 什么是双方括号吗? 谢谢

检查数组的元素大小相同

有没有一种最好有效的方法来检查数组的元素是否大小相同? [[1,2], [3,4], [5]] => false [[1,2], [3,4], [5,6]] => true 我得到了什么: def element_of_same_size?(arr) arr.map(&:size).uniq.size == 1 end 另一种方案: def element_of_same_size?(arr) arr[1..-1].each do |e| if e.size != arr.first.size return false else next end end return true end 当它发现元素与第一个元素的大小不同时,它会立即返回false。 有最佳方​​法吗? (当然…)

是否存在用于返回第一个数组元素的ruby习语,如果只存在一个?

如果数组只包含一个值,我想返回数组的第一个元素。 目前,我使用: vals.one? ? vals.first : vals.presence 从而: vals = []; vals.one? ? vals.first : vals.presence # => nil vals = [2]; vals.one? ? vals.first : vals.presence # => 2 vals = [2, ‘Z’]; vals.one? ? vals.first : vals.presence # => [2, “Z”] 是否有内置的东西可以做到这一点,还是有更好的设计考虑? 我的用例是特定的,涉及知道该方法会有什么期望的演示者(将实现上述代码)。 如果这些演示者将所有返回作为数组处理,那么在大多数情况下(~90%),它们将迭代大小为1或0数组。