Как получить общие элементы из массива и создать новые наборы массивов? - PullRequest
0 голосов
/ 31 января 2020
 let arrayA = ["Orange", "Apple", "grapes", "Orange", "Apple","Apple"]

Ожидаемый результат будет таким:

   let arrSet1 = ["Orange", "Orange"]
   let arrSet2 = ["Apple", "Apple", "Apple"]
   let arrSet3 = ["grapes"]

Ответы [ 2 ]

6 голосов
/ 31 января 2020

Используйте Dictionary's init(grouping:by:),

let arrays = Array(Dictionary(grouping: arrayA, by: {$0}).values)
print(arrays)

Теперь из arrays создайте другой arrSet1 и другие подобные,

let arrSet1 = arrays[0]
let arrSet2 = arrays[1]
let arrSet3 = arrays[2]

Make убедитесь, что у вас есть доступ к arrays на основе счетчика, в противном случае он может выбросить индекс за пределы исключение.

2 голосов
/ 31 января 2020

Попробуйте это решение. Вы получите массив с группой одинаковых значений.

 var counts: [String: Int] = [:]
        for obj in arrayA {
            counts[obj] = (counts[obj] ?? 0) + 1
        }

        var array: [[String]] = []

        for i in counts.keys {
            var arr: [String] = []
            for j in 0..<counts[i]! {
                arr.append(i)
            }
            array.append(arr)
        }
        print(array)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...