Если дело непосредственно получить значение из словаря на основе данного индекса (без использования ключа словаря «.txt»):
let givenIndexForArray = 1
if let value = array[givenIndexForArray]["value"] {
print(value) // 18048
}
Если случай, чтобы получить значение (ы) на основе ключей словарей, вы можете столкнуться дублирования:
В случае дублирования, что вам нужно, чтобы получить массив значений:
let givenKey = "50mbps"
let valueArray = array.filter { // [Optional(18048)]
// assuming that the key is ALWAYS "txt", or value will be an empty array
$0["txt"] == givenKey
}
.map {
// assuming that the value is ALWAYS "value", or value will be an empty array
$0["value"]
}
Итак, давайте предположим, что ваш массив выглядит следующим образом («50Mbps» ключ дублируется):
var array = [["txt":"5mbps", "value": 2048],["txt":"50mbps", "value": 18048],["txt":"50mbps", "value": 22048]]
применяя гр ode снизу, выход должен быть: [Дополнительно (18048), опционально (22048)].
Наконец, если дело получить только одно значение (или первой, если есть дублирование) просто, получить .first
из одного valueArray
массива:
let first = valueArray.first // 18048
«что индекс словарей», что вы имеете в виду под «индексом»? Дайте нам тестовый ввод/вывод. – Alexander
Возможно, лучше использовать массив кортежей? [(txt: String, value: Int)] –
вы можете мне предложить один пример @Adrian – Aashish