У меня есть массив массивов, как показано ниже.
[
["Horse", 8, 0, 0, 0],
["Horse", 0, 0, 12, 0],
["Horse", 0, 7, 0, 0],
["Dog", 1, 0, 0, 0],
["Dog", 0, 0, 3, 0],
["Dog", 0, 3, 0, 0],
["Test", 5, 0, 0, 0],
["Test", 0, 0, 2, 0],
["Test", 0, 0, 0, 2],
["Cat", 5, 0, 0, 0],
["Cat", 0, 0, 4, 0],
["Cat", 0, 2, 0, 0]
]
Я хочу объединить разные массивы, которые начинаются с одинаковых первых элементов, и заменить 0 на значение, находящееся в той же позициивнутри другого массива, как показано ниже.
[
["Horse", 8, 7, 12, 0],
["Dog", 1, 3, 3, 0],
["Test", 5, 0, 2, 2],
["Cat", 5, 2, 4, 0]
]
Пока у меня есть эта функция:
array.each_with_index do |line, idx|
if array[idx+1].present? && line[0] == array[idx+1][0]
line.each_with_index do |l, i|
if l != 0 && array[idx+1][i] == 0
array[idx+1][i] = array[idx][i]
end
end
end
end
Но это не совсем то, что я пытаюсь сделать, но яЯ близокУ кого-нибудь есть идеи?