Когда у меня есть ссылка на элемент в массиве, я хотел бы найти другой ближайший к нему элемент, соответствующий определенным критериям (вперед или назад).Найти ближайший элемент в массиве, который соответствует критериям в Swift?
К примеру, у меня есть массив:
let items = [
(a: "Item 1", b: "F", c: 3),
(a: "Item 2", b: "S", c: 5),
(a: "Item 3", b: "D", c: 7),
(a: "Item 4", b: "A", c: 9),
(a: "Item 5", b: "M", c: 11),
(a: "Item 6", b: "I", c: 13),
(a: "Item 7", b: "F", c: 15),
(a: "Item 8", b: "S", c: 17),
(a: "Item 9", b: "D", c: 19),
(a: "Item 10", b: "A", c: 21),
(a: "Item 11", b: "M", c: 23),
(a: "Item 12", b: "I", c: 13),
(a: "Item 13", b: "F", c: 15),
(a: "Item 14", b: "S", c: 17),
(a: "Item 15", b: "D", c: 19),
(a: "Item 16", b: "A", c: 21),
(a: "Item 17", b: "M", c: 23),
(a: "Item 18", b: "I", c: 13),
(a: "Item 19", b: "F", c: 15),
(a: "Item 20", b: "S", c: 17),
(a: "Item 21", b: "D", c: 19),
(a: "Item 22", b: "A", c: 21),
(a: "Item 23", b: "M", c: 23),
(a: "Item 24", b: "I", c: 13)
]
Теперь у меня есть item[7]
, как я могу найти ближайший пункт, который имеет b = "I"
? Я могу думать только о нескольких вложенных циклах, но звучит беспорядочно и не очень хорошо работает. Также, имея в виду, я не хочу, чтобы при поиске находилась проблема out of range
. Любые быстрые идеи о том, как справиться с этим?
Творческий и лаконичный, но он ищет только вперед. – TruMan1
И результат не в том, чего хочет OP. – Eendje
После того, как я отправил сообщение, я понял, что неправильно понял, что спрашивал ОП. Я собираюсь оставить его в качестве примера краткой находки, которая может быть использована для создания целого решения. – ColGraff