Tag: arrays

Ruby方法,用于对多维数组中的所有值求和

我试图总结一个数组的元素。 没有使用展平。 我尝试过使用以下内容: def multi_array_sum(arr) sum = 0 arr.each do |row| row.each do |column| sum += column end end return sum end 但不幸的是,它没有用。 我不知道如何迭代多维数组,考虑到如果数组中的第一个元素不是另一个数组本身就不能使用each数组,例如, array = [[1, [1, 2], [3, 4, 5]] 。

Ruby – 将整数转换为字符串

在Ruby中,尝试打印出String的各个元素给我带来了麻烦。 我没有看到每个字符,而是看到了他们的ASCII值: >> a = “0123” => “0123” >> a[0] => 48 我在网上看了但是找不到任何方法让原来的“0”退出它。 我对Ruby有点新鲜,我知道它必须是简单的东西,但我似乎无法找到它。

如何’加入’一个数组,在结果字符串的开头添加第一个要加入的字符?

我正在使用Ruby on Rails 3,我正在尝试使用&字符join数组。 我阅读了关于它的Ruby文档。 我的arrays是: [“name1”, “name2”] 如果我做 [“name1”, “name2”].join(“&”) 结果是 name1&name2 我希望结果为 &name1&name2 # Note the first “&” 一个解决方案是 [“”, “name1”, “name2”].join(“&”) 但我认为这不是一种“正确的方式”。 那么,如何在不使用[“”, “name1”, “name2”].join(“&”)情况下拥有&name1&name2 [“”, “name1”, “name2”].join(“&”) ?

迭代数组并添加每个连续的数组值

我有一笔金额。 我想从第一个值开始迭代数组,如果我添加下一个值并且它等于amount,那么应返回数组中的这两个值。 如果它不等于该值,请尝试在该值之后添加下一个值并检查它是否等于该量。 然后返回加起来的值数组等于数量 例 假设我有一个[1,2,3,4,7]和6的数组 我知道我可以通过添加1 + 2 + 3来制作6,所以我想返回[1,2,3] 。 它是迭代数组的开始,然后检查我是否添加下一个如果它等于6,如果没有,尝试添加下一个并看到它等于6 ……依此类推,直到我得到的值为加在一起等于6。 换句话说,找到这个数组中加起来的值组成6。

如何在ruby中显示数组的所有整数?

我是ruby的新手。 尝试使用方法获取数组中的所有数字。 x = [1..10] 预期结果。 => [1,2,3,4,5,6,7,8,9,10]

使用Ruby一次处理数组的X元素的选项

我们希望一次处理一个数组的1000个元素。 在Ruby中执行此操作有哪些选择? 显然,一种方法是做一个简单的循环并从数组中切割出1000个元素,直到没有更多的元素保留,但是如果还有其他更优雅的选项则很奇怪。 这是一个Rails应用程序(RoR 3.2.12)。

Ruby内部展平(数组数组)

我有一个像下面这样的数组 [ [[0, :a], [2, :b]], [3, :c], [4, :d], [[5, :e], [6, :f], [7, :g]] ] 也就是说,元素数组是(1)2元素数组,或(2)2元素数组数组。 我试图找到一种优雅的方法来“扁平化”这个数组,使得(2)的元素扩展到根级元素。 在这个例子中: [[0, :a], [2, :b], [3, :c], [4, :d], [5, :e], [6, :f], [7, :g]] 这几乎就像使用Array#flatten(depth) ,除了depth需要从内到外工作,而不是外部工作。 实际的数组可能变得非常大,因此出于性能原因,我不希望将( << )元素推送到循环中的新数组中。 出于某种原因,我无法想到如何使用map , flatten , flat_map或其他更有效的Enumerable方法的任意组合来实现这一点,而无需编写C ++样式的preallocate-and-populate循环。 任何人都可以想到更多Rubyist方式来做到这一点吗?

Ruby – 数组交集(带有重复项)

我有array(1 and 2) 。 我如何从中获取array3 ? array1 = [2,2,2,2,3,3,4,5,6,7,8,9] array2 = [2,2,2,3,4,4,4,4,8,8,0,0,0] array3 = [2,2,2,3,4,8] array1 & array2返回[2,3,4,8] ,但我需要保留重复项。

Ruby – 数组A是否包含数组B的所有元素

有没有方法来检查数组A是否包含数组B的所有元素?

如何在Ruby中交错不同长度的数组

如果我想在Ruby中交错一组数组,并且每个数组的长度相同,我们可以这样做: a.zip(b).zip(c).flatten 但是,如果arrays的大小不同,我们如何解决这个问题呢? 我们可以这样做: def interleave(*args) raise ‘No arrays to interleave’ if args.empty? max_length = args.inject(0) { |length, elem| length = [length, elem.length].max } output = Array.new for i in 0…max_length args.each { |elem| output << elem[i] if i < elem.length } end return output end 但有没有更好的’Ruby’方式,也许使用zip或转置或其他一些?