Соединить массив, используя переменный разделитель - PullRequest
0 голосов
/ 18 июня 2019

Я пытаюсь объединить массив, используя .joined(separator:). Однако я хочу, чтобы разделитель включал индекс. Например, если у меня есть массив ["red", "orange", "yellow", "green"], я хочу, чтобы вывод был "red (0), orange (1), yellow (2), green". Я пытался сделать .joined(separator: "\($0.index), "), но это не сработало.

Ответы [ 2 ]

4 голосов
/ 18 июня 2019

Это то, что вы хотите?

let array = ["red", "orange", "yellow", "green"]

let output = array.enumerated()
    .map { $1 + " (\($0))" }
    .joined(separator: ", ")

print(output)   //red (0), orange (1), yellow (2), green (3)

Если последний индекс не должен быть включен, то вот решение:

let output = (array.dropLast().enumerated()
    .map { $1 + " (\($0))" }
    + [array.last ?? ""])
    .joined(separator: ", ")
2 голосов
/ 18 июня 2019

Вы можете попробовать

var arr = ["red", "orange", "yellow", "green"]
let num = (0 ..< arr.count - 1).map { " (\($0)), " }
let res = zip(arr,num).map{ $0 + $1 }.joined() + arr.last!
...