Ruby Array: противоположность `&` для массива - PullRequest
0 голосов
/ 19 мая 2018

В ruby ​​вы можете пересекать два массива с помощью оператора &.
Я пытаюсь получить остаток от пересечения.

Если я использую простой случай, то достаточно -:

array_1 = [0, 1]
array_2 = [0]
array_1 - array_2 => [1]

Теперь представьте, что у нас 0 появляется несколько раз в первом массиве

array_1 = [0, 0, 1]
array_2 = [0]
array_1 - array_2 => [1]

Я хотел бы знать самый простой способ получить разницу между первым массивом ипересечение первого массива и второго массива

array_1 = [0, 0, 1]
array_2 = [0]
array_1 ??? array_2 => [0, 1]

1 Ответ

0 голосов
/ 19 мая 2018

У меня есть предложенный метод, который, я думаю, вы хотите добавить в ядро ​​Ruby.Смотрите ссылку для примеров его использования.

class Array
  def difference(other)
    h = other.each_with_object(Hash.new(0)) { |e,h| h[e] += 1 }
    reject { |e| h[e] > 0 && h[e] -= 1 }
  end
end

a = [1,2,3,4,3,2,2,4] 
b = [2,3,4,4,4]

a.difference b
  #=> [1, 3, 2, 2] 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...