Первые 7 элементов
Вы можете использовать Array#slice
для хеша, преобразованного в массив, а затем преобразовать обратно в хеш. Вот пример:
x = {
"01/01"=>{:a=>0, :b=>2},
"01/05"=>{:a=>1, :b=>0},
"31/08"=>{:a=>26, :b=>32},
"01/09"=>{:a=>2, :b=>9},
"02/09"=>{:a=>0, :b=>3},
"04/09"=>{:a=>0, :b=>4},
"06/09"=>{:a=>0, :b=>26},
"07/09"=>{:a=>0, :b=>2},
"06/10"=>{:a=>0, :b=>1},
"07/11"=>{:a=>0, :b=>1}
}
y = x.to_a.slice(0,7).to_h
Тогда y
равно
{
"01/01"=>{:a=>0, :b=>2},
"01/05"=>{:a=>1, :b=>0},
"31/08"=>{:a=>26, :b=>32},
"01/09"=>{:a=>2, :b=>9},
"02/09"=>{:a=>0, :b=>3},
"04/09"=>{:a=>0, :b=>4},
"06/09"=>{:a=>0, :b=>26}
}
Хэш также имеет метод среза (по крайней мере, в 2.5.1), но ему необходимо предоставить ключи для среза из хеша. Если вы знали ключи заранее, вы могли бы сделать:
y = x.slice("01/01", "01/05", "31/08", "01/09", "02/09", "04/09", "06/09")
С таким же результатом для y
.
Hash#slice
документы: https://ruby -doc.org / core-2.5.1 / Hash.html # method-i-slice
Последние 7 элементов
Вы можете использовать Array#last
для хеша, преобразованного в массив, а затем преобразовать обратно в хеш. Вот пример:
x = {
"01/01"=>{:a=>0, :b=>2},
"01/05"=>{:a=>1, :b=>0},
"31/08"=>{:a=>26, :b=>32},
"01/09"=>{:a=>2, :b=>9},
"02/09"=>{:a=>0, :b=>3},
"04/09"=>{:a=>0, :b=>4},
"06/09"=>{:a=>0, :b=>26},
"07/09"=>{:a=>0, :b=>2},
"06/10"=>{:a=>0, :b=>1},
"07/11"=>{:a=>0, :b=>1}
}
y = x.to_a.last(7).to_h
Тогда y
равно
{
"01/09"=>{:a=>2, :b=>9},
"02/09"=>{:a=>0, :b=>3},
"04/09"=>{:a=>0, :b=>4},
"06/09"=>{:a=>0, :b=>26},
"07/09"=>{:a=>0, :b=>2},
"06/10"=>{:a=>0, :b=>1},
"07/11"=>{:a=>0, :b=>1}
}