将数组从一个结构转换为另一个结构

时间:2017-05-02 07:14:30

标签: ios arrays swift

也许这不是问这样问题的好地方,但无论如何: 我有一个这种结构的数组:

let array = [["1", "value 1"], ["1", "value 2"], ["1", "value 3"], ["2", "value 4"], ["2", "value 5"]]

我需要将此结构转换为:

[["1", ["value 1", "value 2", "value 3"], ["2", ["value 4", "value 5"]]]

我无法弄清楚如何做到这一点,所以如果你帮助我会很好的)谢谢!

2 个答案:

答案 0 :(得分:0)

探索阵列上的reduce运算符。 :)这允许您迭代您的数组。

然后你只需要检查元素的索引0以知道它属于哪个类别或密钥,然后在那里附加。然后,您可以将结果组成Dictionary,其类型为[String: String]

答案 1 :(得分:0)

我以势在必行的方式解决了这个问题:

var indexesArray: [String] = []
var valuesArray: [String] = []

for item in array {
    indexesArray.append(item[0])
    valuesArray.append(item[1])
}

let indexSet = Set(indexesArray).sorted()

for index in indexSet {
    var values: [String] = []
    var newArray: [Any] = []
    for (itemIndex, item) in indexesArray.enumerated() {
        if item == index {
            values.append(valuesArray[itemIndex])
        }
    }
    newArray.append(index)
    newArray.append(values)
    print(newArray)
}

控制台中的输出如下所示:

["1", ["value 1", "value 2", "value 3"]]
["2", ["value 4", "value 5"]]

如果某人有另一个更好,更优雅的解决方案,请随时在此处发布您的代码,我将非常感激!