Ruby on rails 使用.map函数创建哈希
我有一个数组Ruby on rails 使用.map函数创建哈希,ruby-on-rails,Ruby On Rails,我有一个数组[5,2,6,4],我想创建一个结构,比如第一行减去第二行等等,直到最后一行 我尝试过使用map,但不确定如何继续,因为我可能需要indx 我希望将结果存储在如下内容中: {1 => (5, 2, 3), 2 =>(2,6,-4), 3 => (6,4,2)} 因此x数组应该返回x-1散列。 有人知道怎么做吗?应该是一个简单的。 谢谢。尝试使用 each_with_index 假设您有一个数组: arr = [3,[2,3],4,5] 并且您希望使用哈希(键
[5,2,6,4]
,我想创建一个结构,比如第一行减去第二行等等,直到最后一行
我尝试过使用map,但不确定如何继续,因为我可能需要indx
我希望将结果存储在如下内容中:
{1 => (5, 2, 3), 2 =>(2,6,-4), 3 => (6,4,2)}
因此x
数组应该返回x-1
散列。
有人知道怎么做吗?应该是一个简单的。
谢谢。尝试使用
each_with_index
假设您有一个数组:
arr = [3,[2,3],4,5]
并且您希望使用哈希(键值对)进行转换Key'表示数组的索引,“value”表示数组的值。获取一个空白哈希,并使用_索引对每个_进行迭代,然后推入哈希,最后打印哈希
试试这个:
hash={}
arr.each_with_index do |val, index|
hash[index]=val
end
p hash
其产出将是:
{0=>3, 1=>[2, 3], 2=>4, 3=>5}
如果您希望索引总是以1或2等开头,则使用
arr.each.with_index(1) do |val, index|
hash[index] = val
end
输出将是:
{1=>3, 2=>[2, 3], 3=>4, 4=>5}
首先,您希望成对使用数组元素:
5,2
,2,6
。。。这意味着您要使用:
然后,您需要索引获取1
,2
。。。散列键;这意味着在混合中加入一种新的成分:
a.each_cons(2).with_index { |(e1, e2), i| ... }
然后,您可以使用将最后一块(散列)放入游戏:
a.each_cons(2).with_index.with_object({}) { |((e1, e2), i), h| h[i + 1] = [e1, e2, e1 - e2] }
如果您认为块的参数中的所有括号太过嘈杂,那么您可以分步执行,而不是一行一行。您可以使用
每个索引
:
a=[5,2,6,4]
h={}
a[0..-2].每个| i | h[i+1]=[a[i],a[i+1],a[i]-a[i+1]}
H
=> {1=>[5, 2, 3], 2=>[2, 6, -4], 3=>[6, 4, 2]}
a.each_cons(2).with_index.with_object({}) { |((e1, e2), i), h| h[i + 1] = [e1, e2, e1 - e2] }