如何从两个1D数组输出2D数组?

时间:2019-03-26 06:49:33

标签: swift 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]]

2 个答案:

答案 0 :(得分: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 :(得分:0)

let id = ["2", "2"]
let quant = ["3", "4"]
let result = Array(zip(id, quant))