• Как использовать .sorted для строки двумерного массива c сохранением соответствия второй строки?

    maximglobak
    @maximglobak
    iOS developer
    Написал пример для конкретного случая из двух массивов
    //: Playground - noun: a place where people can play
    
    import UIKit
    
    let input = [[5, 1, 3], [1, 2, 7]]
    let output = [[1, 3, 5], [2, 7, 1]]
    
    // ---------
    
    var result = input
    
    if let firstArray = result.first, var secondArray = result.last {
      // Сортируем первый массив
      let firstOutput = firstArray.sorted()
      // Создаем копию второго массива, которую будем изменять в процессе перестановки
      var secondOutput = secondArray
    
    
      for i in 0..<firstArray.count {
    
        // Значение элемента до сортировки
        let value = firstArray[i]
    
        // Получаем позицию после сортировки
        if let after = firstOutput.index(of: value) {
          // Записываем изменения во второй массив
          secondOutput[after] = secondArray[i]
        }
      }
    
      // Перезаписываем результат
      result = [firstOutput, secondOutput]
    
    }
    
    print(result)
    Ответ написан
    2 комментария
  • Как String массив превратить в Int массив (многомерный)?

    maximglobak
    @maximglobak
    iOS developer
    Добрый день!
    В вашем первом примере вы пытаетесь массив со строками преобразовать в Int и получаете ошибку.
    Если использовать .map, то он возвращает массив опциональными значениями. И в таком случае если попадется строка в массиве, которую невозможно будет конвертировать в Int, то в этом месте будет nil.

    Если использовать flatMap, то он оставит только те значения, которые удачно преобразовались в Int.
    let arr = [["9", "6", "7", "8", "5"], ["1", "1", "1", "1", "1"]]
    let mapArr = arr.flatMap { $0.flatMap { Int($0) } }
    Ответ написан
    3 комментария