Найти максимум в массиве словарей - PullRequest
0 голосов
/ 31 октября 2018

Мне нужно найти максимальное значение в массиве [[String:Any]], которое выглядит следующим образом:

"date":someDate
"value":8
.
.

"date":anotherDate
"value":13
.

Мне нужно максимальное значение (13), есть ли простой способ без традиционного цикла по массиву и извлечения всех чисел и т. Д.?

1 Ответ

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

Вот одно из возможных решений с использованием Array max(by:).

Обратите внимание, что в этом примере используется много операторов сбоя (!). Безопасно распакуйте, как необходимо для вашего реального кода:

let data: [[String: Any]] = [
    ["date":Date(), "value":8],
    ["date":Data(), "value":13],
]

let maxEntry = data.max { ($0["value"] as! Int) < ($1["value"] as! Int) }!
let maxValue = maxEntry["value"] as! Int

Другой вариант - использовать map и max:

let maxValue = data.map { $0["value"] as! Int }.max()!

Все эти примеры предполагают, что массив не будет пустым, и что каждый словарь имеет действительное значение Int для ключа "value". При необходимости измените код, если эти предположения неверны.

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