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] }