Я хочу сортировать массив массивов строк первой строкой, пропуская первый массив, но у меня просто нет идеи, как это сделать, используя встроенную команду sort
метод. Я мог бы скопировать весь массив без первого элемента и отсортировать возвращаемый массив, но нет ли более элегантного способа сделать это?Ruby: Сортировка массива, пропуская первый элемент
ar = [["zzzz", "skip", "this"], ["EFP3","eins","eins"], ["EFP10","zwei","zwei"], ["EFP1","drei","drei"]]
ar.sort!{ |a,b|
if a == ar.first # why doesn't
next # this
end # work ?
# compare length, otherwise it would be e.g. 10 < 3
if a[0].length == b[0].length
a[0] <=> b[0]
else
a[0].length <=> b[0].length
end
}
Я хочу, чтобы иметь результат, как этот:
["zzzz", "skip", "this"], ["EFP1","drei","drei"], ["EFP3","eins","eins"], ["EFP10","zwei","zwei"]
sortet по "EFP#"
редактирования: Я использую Ruby 1.8, если это важно.