Reputation: 72865
Let's say I have an array like so:
[
["required": true],
["required": true],
["required": false],
["required": false],
["required": false],
["required": false],
["required": false]
]
I want to insert a new element into this array at the index where required
first equals false
(at position 2). I'm sure I could determine this using a basic for-each loop, e.g.:
var idx = 0
for (i, el) in myArray.enumerate() {
if el["required"] == false {
idx = i
break
}
}
But this doesn't seem very Swift-like. Is there a cleaner (i.e. less code) way of doing this in Swift 2? Perhaps something using filter or map?
Upvotes: 1
Views: 3146
Reputation: 1786
How about this:
let idx = myArray.indexOf({$0["required"] == false})
Swift 3:
let idx = myArray.index(where: { $0["required"] == false })
Upvotes: 8
Reputation: 52227
let required = array.filter { $0["required"] == true }
let notRequired = array.filter { $0["required"] == false }
let result = required + [["required": true]] + notRequired
Upvotes: 0