Карта кортежей для Array Swift - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть массив кортежей:

[(0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1)]

Как лучше всего преобразовать это в один массив [0, 1, 0, 1.....]?

Я пробовал

let newArray = tupleArray.map{$0.0, $0.1}

но это не работает и говорит, что последовательные утверждения должны быть разделены;; Должен быть какой-то умный способ уменьшить их.

Ответы [ 3 ]

2 голосов
/ 06 февраля 2020

Вам нужно добавить оба элемента в массив в замыкании, а также вы должны использовать flatMap вместо map, чтобы сгладить вложенный массив, который будет генерировать map.

let arrayOfTuples = [(0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1)]
let flattenedArray = arrayOfTuples.flatMap{ [$0.0, $0.1] }
1 голос
/ 06 февраля 2020

Это будет ваш ответ:

let arrTouple = [(0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1)] 
let arr = arrTouple.flatMap{ [$0, $1] }

print(arr) // [0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1]
0 голосов
/ 06 февраля 2020

Просто используйте map(_:) и flatMap(_:), чтобы сгладить tuples array,

let tuples = [(0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1)]
let arr = tuples.map({ [$0.0, $0.1] }).flatMap({ $0 })

Выход:

[0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1]
...