I was working on a project earlier this month and I needed to use elements from another array to update an existing array. Tried using the zip() function then mapping the sequence, but it would drop the rest of the elements in the array. This map function I'm pitching would retain the order and also the elements of array that the mapping closure was not applied to.
Hopefully the example below, makes it clear.
let fooArray: [Foo] = [Foo(),Foo(),Foo(),Foo(),Foo()]
let barArray:[Bar] = [Bar(),Bar(),Bar()]
//mappedFoo.count == 5
let mappedFoo = fooArray.zipMap(against: barArray) { (foo, bar) -> Foo in
var fooBar = foo
fooBar.bar = bar
return fooBar
}
I have a working implementation and would like to hear your thoughts.