也许这不是问这样问题的好地方,但无论如何: 我有一个这种结构的数组:
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"]]]
我无法弄清楚如何做到这一点,所以如果你帮助我会很好的)谢谢!
答案 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"]]
如果某人有另一个更好,更优雅的解决方案,请随时在此处发布您的代码,我将非常感激!