#swift #xcode
#быстрый #в Xcode
Вопрос:
У меня есть два массива, из которых мне нужно вывести 2D-массив:
let id = productArrays.map { $0.productID }=["2", "2"]
let quant = productArrays.map { $0.quantity }=["3", "4"]
var array = [[Int]]()
for i in 0..<productArrays.count {
var subArray = quant
for j in 0..<productArrays.count {
subArray[i]![j] = quant
}
array.append(subArray)
}
}
Мне нужно вывести вот так:
[[3, 2],[4, 2]]
Комментарии:
1. сообщите о характере проблемы, с которой вы столкнулись
2. Не могли бы вы показать нам, что
productArrays
содержит изначально, какую-то структуру или?3. опубликуйте, пожалуйста, исходные два массива
4. Идентификатор исходного массива = [«2», «2»] и квантовать = [«3», «4»]
5. Мне нужно сделать 2D массив следующим образом [[«2″,»3»],[«2″,»4»]
Ответ №1:
let id = ["2", "2"]
let quant = ["3", "4"]
let result = Array(zip(id, quant))
Комментарии:
1. Это создает массив с двумя кортежами
Ответ №2:
Обновление, решение для использования zip
let array = zip(id, quant).map {[$0.0, $0.1]}
или, если вы предпочитаете, чтобы массив содержал целые числа
let array = zip(id, quant).map {[Int($0.0) ?? 0, Int($0.1) ?? 0]}
Вот простое решение для объединения и преобразования элементов массива
let id = ["2", "2"]
let quant = ["3", "4"]
var array = [[Int]]()
let end = min(id.count, quant.count)
for i in 0..<end {
if let id = Int(id[i]), let quant = Int(quant[i]) {
array.append([id, quant])
}
}
Поскольку вопрос содержит map
в массиве, я хотел включить альтернативное решение на случай, если исходные данные содержатся в некоторой структуре (в массиве), поскольку такое решение довольно простое
struct Item { //My made up struct
let id: String
let quant: String
}
let productArray = [Item(id: "2", quant: "3"), Item(id: "2", quant: "4")]
let array2 = productArray.compactMap { item -> [Int]? in
if let id = Int(item.id), let quant = Int(item.quant) {
return [id, quant]
}
return nil
}
Комментарии:
1. @ShahedAboSaleem Я обновил свой ответ правильным решением для использования
zip
, которое дает вам желаемый 2D-массив.