我想像这样转换多维数组:
var array = [
["10011"],
["11011"]
]
进入结果(使用Swift),如下所示:
var result = [
[1,0,0,1,1],
[1,1,0,1,1]
]
这是我迄今为止所尝试过的:
var array = [
["10011"],
["10011"]
]
for var i in 0..<array.count {
array[i][0] = (array[i][0]).characters.map { (c) -> Int in
return c as! Int
}
}
print(array)
但我收到此错误消息:
无法指定类型&#39; [Int]&#39;的值输入&#39; String&#39;
在map
行。
如何摆脱这个错误?
答案 0 :(得分:1)
这样可行:
var array = [
["10011"],
["11011"]
]
let output = array.map {
//$0[0] fetches a string from the inner array.
//flatMap unwraps the optionals and discards any nil results
$0[0].flatMap {
//This converts each character into an Optional(Int)
Int(String($0))
}
}
请注意,如果字符串中的任何字符都不是有效数字,那么它们将从输出数组中删除,并且该子数组将更短。
如果这不符合您的要求,请将Int(String($0))
更改为Int(String($0)) ?? 0
另请注意,您可以将整个事情放在一行:
let output = array.map { $0[0].flatMap { Int(String($0)) }
但这有点难以阅读。