Разделить объекты массива на группы массивов в Swift 3 - PullRequest
0 голосов
/ 22 мая 2018

У меня есть массив, как показано ниже:

let totalArr = ["First","Second","Third","Fourth","First","Second", "Second"]

Мой требуемый вывод:

let grouper = [["First","First"],["Second", "Second", "Second"],["Third"],  ["Fourth"]]

Кто-нибудь может дать оптимальные итерации?

Ответы [ 3 ]

0 голосов
/ 22 мая 2018

Вы можете использовать функцию группировки Dictionay, чтобы создать группу, а затем получить все значения.

let totalArr = ["First","Second","Third","Fourth","First","Second", "Second"]

let group = Dictionary(grouping: totalArr) { (object) -> String in
    let lowerBound = String.Index(encodedOffset: 0)
    let upperBound = String.Index(encodedOffset: 1)
    return String(object[lowerBound...upperBound])
}
print("group :\(group.values)")
0 голосов
/ 22 мая 2018
 let totalArr = ["First","Second","Third","Fourth","First","Second", "Second"]

 let grouper =   (Dictionary(grouping: totalArr, by: { $0})).map {  $0.value}

 print(grouper)

или

  let arranged =   (Dictionary(grouping: totalArr, by: { $0})).values
 print(arranged)
0 голосов
/ 22 мая 2018

попробуйте это:)

Вы можете передать любой массив String в функцию, и он вернет желаемый результат:

func groupArr(totalArr: [String]) -> [Any]{
    var grouperArr = [[String]]()
    for i in totalArr{
        let arr = totalArr.filter({($0 == i)}) as [String]
        if(grouperArr.contains(arr) == false){
            grouperArr.append(arr)
        }
    }
    return grouperArr
}
...