2016-02-21 3 views
1

Допустим, у меня есть массив следующим образом:Найти первый элемент массива, соответствующий определенному условию в Swift

[ 
    ["required": true], 
    ["required": true], 
    ["required": false], 
    ["required": false], 
    ["required": false], 
    ["required": false], 
    ["required": false] 
] 

Я хочу, чтобы вставить новый элемент в этом массиве в индекс, где required первый равен false (в позиции 2). Я уверен, что я мог бы определить это с помощью базовой для-каждого цикла, например .:

var idx = 0 
for (i, el) in myArray.enumerate() { 
    if el["required"] == false { 
     idx = i 
     break 
    } 
} 

Но это, кажется, не очень Swift как. Есть ли более чистый (то есть меньше кода) способ сделать это в Swift 2? Возможно, что-то использует фильтр или карту?

ответ

8

Как об этом:

let idx = myArray.indexOf({$0["required"] == false}) 

Swift 3:

let idx = myArray.index(where: { $0["required"] == false }) 
+0

Superb спасибо очень много! – brandonscript

+0

круто, рад помочь –

0
let required = array.filter { $0["required"] == true } 
let notRequired = array.filter { $0["required"] == false } 
let result  = required + [["required": true]] + notRequired 
Смежные вопросы