Вот пример массива Я работаю с:Конкатенации существующих значений в пределах одного массива в Рубине
arr = [ "id1", "name1", "id2", "name2", "id3", "name3" ]
Я хочу, чтобы изменить его в новый массив, который выглядит как:
new_arr = [ "id1: name1", "id2: name2", "id3: name3" ]
Моя попытка:
ids = arr.select.with_index { |_, i| i.even? }
names = arr.select.with_index { |_, i| i.odd? }
new_arr = ids.map { |i| i + ": " + names[ids.index(i)] }
есть ли лучше или более выразительный способ сделать это (возможно в однострочника)?
являются идентификаторами уникальным? –
Да, идентификаторы уникальны и всегда входят в этот идентификатор, шаблон имени для массива. – massaskillz
Тогда вам может быть интересно использовать хэш, 'arr.each_slice (2) .to_h # => {" id1 "=>" name1 "," id2 "=>" name2 "," id3 "=>" name3 " } 'для удобного доступа к значениям с использованием обычной хэш-функции [key]. –