Как сравнить два массива, если они имеют одинаковые значения или нет в ruby - PullRequest
0 голосов
/ 15 октября 2018

Я сравниваю ответ API с полями базы данных.Я сохранил ответ API в одном массиве и поле базы данных в другом

API_Response = "2451423412", "2453565", "23563425645", "43252436", "4676345"

Database_Response = 768567, 4534534, 32451423412, 6978657, 2453565 , 23563425645, 43252436, 4676345

В массиве «Database__Response» у меня есть 8 значений, из которых 5 значений похожи на массив «API_Response».

Я хочу удалить двойные кавычки из «Ответа API» и затем сравнить, доступны ли все значения в массиве «API_Response» в массиве «Database__Response»

Ответы [ 5 ]

0 голосов
/ 15 октября 2018

Если вы ищете простой результат true / false, я рекомендую взглянуть на класс Set .Он содержит несколько полезных методов проверки того, является ли один набор надмножеством или подмножеством другого набора.

require 'set'

API_Response.map!(&:to_i)
Set.new(API_Response) <= Set.new(Database_Respone)
#=> false

Имейте в виду, что при создании набора из массива дублирующиеся значения удаляются автоматически.

Ссылки:

0 голосов
/ 15 октября 2018

Я думаю, это поможет вам проверить это

Чтобы удалить двойные кавычки из API Response, просто сделайте это

            API_Response = API_Response.map(&:to_i)

Теперь, чтобы сравнить API_Response и Database_Response

        result =  API_Response & Database_Response 

это сравнит оба массива и даст вам общие значения из обоих массивов

       result = [2453565, 23563425645, 43252436, 4676345]

Надеюсь, это вам поможет.

0 голосов
/ 15 октября 2018

Если вы хотите увидеть, доступны ли все значения API_Reponse в Database_Response, вам следует сделать следующее:

API_Response = API_Response.map(&:to_i)
(API_Response - Database_Respone).size.zero?

Результат второго LOC определит, все ли значенияAPI_Response присутствуют в Database_Response

0 голосов
/ 15 октября 2018

Я бы сделал что-то вроде этого:

API_Response.all? { |number| Database_Response.include?(number.to_i) }

all? вернется, как только найдет number, который не включен и, следовательно, может быть быстрее, чем проверка всех чисел.

В зависимости от размера Database_Response может иметь смысл сначала преобразовать этот массив в Set.Кроме того, вы можете повысить производительность, используя базу данных для решения этой проблемы, вместо того, чтобы сначала загружать все записи в память.

0 голосов
/ 15 октября 2018

Преобразование массива строк в массив целых чисел.Затем отсортируйте массив для сравнения массивов

API_Response.map(&:to_i).sort == Database_Response.sort

. Это вернет истину, только если оба массива ответов после сортировки равны

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