Одна строка для сортировки небольшого массива по большому массиву, содержащему те же значения в Ruby? - PullRequest
1 голос
/ 20 апреля 2011

Скажем, у меня есть 2 таких массива:

# base set
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]

# sub set
b = [5, 1, 8, 3]

Какой оптимальный способ сортировки b в том же порядке, что и a?

a.sort_like(b) #=> [1, 3, 5, 8]

Что этооперация называется?

Ответы [ 3 ]

11 голосов
/ 20 апреля 2011

Я думаю, это то, что вы хотите:

a & b
1 голос
/ 20 апреля 2011

Это будет сделано, я не уверен насчет наиболее эффективного способа.

def sort_like(other)
  items = []
  other.each do |find|
    each do |item|
      items.append item if item == find
    end
  end
  items
end
0 голосов
/ 20 апреля 2011

Если b является подмножеством a, как вы определили, то результатом всегда будет отсортированная версия b .В этом случае вы просто хотите b.sort (он не будет мутировать b, он вернет новый массив с отсортированным содержимым b).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...