Запрос массива из другого массива - PullRequest
1 голос
/ 25 июля 2011

У меня есть следующие 2 массива. Массив A с 10 идентификаторами, а другой массив - массив B с 300 идентификаторами со всеми соответствующими данными.

Я хочу получить все данные из B с идентификаторами, указанными в массиве A.

Я мог бы просто зациклить все записи в массиве B на каждой записи в массиве A, но это выглядит немного тяжелым для такой простой задачи. Какие бы лучшие решения в этом случае?

Thnx!

Ответы [ 4 ]

2 голосов
/ 25 июля 2011

Если вам не нужен упорядоченный массив, вы можете переключиться на хеш-таблицу (например, NSSet), которая имеет намного более быстрое время поиска (сильное смещение в сторону O (1)).В противном случае вам пришлось бы перебрать весь массив и проверить все его элементы.

1 голос
/ 25 июля 2011

Возможно используйте предикат (a, b - ваши массивы):

NSPredicate* filter = [NSPredicate predicateWithFormat: @"self IN %@", a];
NSArray* result = [b filteredArrayUsingPredicate: filter];

Хотя, это может работать, только если объекты в ваших массивах - простые вещи, такие как строки.

1 голос
/ 25 июля 2011

Когда вы заполняете массив B, вы можете вместо этого сделать его dictionary. Предполагая, что ids равны unique, вы можете получить значение объекта для ключа в массиве A из массива B. Это позволит избежать зацикливания и является своего рода эквивалентом хеш-таблицы.

Возвращенное значение будет затем иметь соответствующие данные для конкретного unique id.

0 голосов
/ 25 июля 2011

Я не понимаю, как вы собираетесь сделать это иначе, если вы используете массивы. Единственный способ получить доступ к нужному элементу - выполнить цикл по массиву.

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