Intereting Posts
Симулятор xCode – это другой цвет? Вытягивание игрового механика в стратегической игре iOS? преобразование значения из словаря в NSNumber Xamarin.iOS – ExportAsynchronously не удается предупреждение: не удалось загрузить информацию о классе Objective-C. Это значительно снизит качество информации о типе Свойство класса Swift для самостоятельной привязки Как NSSets хранятся в памяти и делают ли они более эффективными Устранение причин ошибки EXC_BAD_ACCESS – swift Как UIKit нарисовать анимированный объект UIActivityIndicator, когда основной поток заблокирован? CGAffineTransformScale в Swift 3.0 SearchBar / SearchDisplayController в оверлейных контейнерах UITableView – iOS 7 Отправить запрос NSURLConnection несколько раз с разными URL-адресами в цикле for это обработчик завершения AVAssetImageGenerator, вызванный в основном потоке? iOS: show segue предотвращает автоматический просмотр UITableViewController, когда UITextField получает фокус Эффект аудиоэффекта iOS / Android

Вырезать элементы массива в Swift 2

У меня есть массив элементов (это основной массив). Тип массива – String

basicArray = [1710, 1725, 1740, 1755, 1810, 1825, 1840, 1855, 1925, 1955, 2020, 2050, 2120, 2150, 2220, 2250, 2320, 2350, 2430]

Мне нужно создать два новых массива, где каждый элемент basicArray должен быть разрезан на две части, например:

 array1 = [17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 20, 20....] array2 = [10, 25, 40, 55, 10, 25, 40, 55, 25,55, 20, 50...] 

Как лучше это сделать? Спасибо за ваш совет!

Solutions Collecting From Web of "Вырезать элементы массива в Swift 2"

 let basic = ["1710", "1725", "1740", "1755", "1810", "1825", "1840", "1855", "1925", "1955", "2020", "2050", "2120", "2150", "2220", "2250", "2320", "2350", "2430"] let array1 = basic.map { String($0.characters.prefix(2)) } let array2 = basic.map { String($0.characters.suffix(2)) } print(array1) print(array2) 

Вывод:

 ["17", "17", "17", "17", "18", "18", "18", "18", "19", "19", "20", "20", "21", "21", "22", "22", "23", "23", "24"] ["10", "25", "40", "55", "10", "25", "40", "55", "25", "55", "20", "50", "20", "50", "20", "50", "20", "50", "30"] 

Что-то вроде этого?

Попробуйте (подсказки в комментариях кода):

 var basicArray = [1710, 1725, 1740, 1755, 1810, 1825, 1840, 1855, 1925, 1955, 2020, 2050, 2120, 2150, 2220, 2250, 2320, 2350, 2430] var firstTwoDigitsArray = [Int]() var lastTwoDigitsArray = [Int]() for element in basicArray { // dividing by 100 shifts the numbers down by the first two digits firstTwoDigitsArray.append(element/100) // modulo 100 gets the last two digits lastTwoDigitsArray.append(element%100) } print(firstTwoDigitsArray) // [17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24] print(lastTwoDigitsArray) // [10, 25, 40, 55, 10, 25, 40, 55, 25, 55, 20, 50, 20, 50, 20, 50, 20, 50, 30] 

Swift имеет встроенный метод, называемый filter который в основном представляет собой закрытие, которое выполняет итерацию по всем элементам и позволяет – как следует из названия – фильтровать элементы на основе предиката:

 let array = [1,2,3,4,5,6] let array1 = array.filter { $0 % 2 == 0 } print(array1) // [2, 4, 6] let array2 = array.filter { $0 % 2 == 1 } print(array2) // [1,3,5] 

Вы не дали понять, как вы хотите, чтобы эти массивы были отфильтрованы , поэтому трудно явно дать ответ, который вы можете искать …