我有一组双打数组。如何将其转换为打印在控制台上的单个字符串?
我需要创建一个函数,它接受一个双精度数组数组作为参数并返回一个字符串对象。然后循环遍历每个内部数组,并将内部数组的每个元素连接成一个String对象。但我不知道该怎么做。
var array1 = [2.6, 6.7, 7.2, 4.1, 3.1]
var array2 = [1.2, 3.5, 2.8, 4.5, 6.4]
var array3 = [1.2, 1.3, 1.4, 1.5, 1.6]
var nestedArray = [array1, array2, array3]
这是我的代码......但是我不知道如何做一个for循环来给我答案......
func nestedFunction(nestedArray: [[Double]]) -> String {
var stringVar: String = ""
( for loop here... )
return stringVar
}
print(nestedArrayFunction(nestedArray))
预期输出应该是一个字符串对象,没有括号
答案 0 :(得分:1)
如果你想要它没有括号:
let string = nestedArray.flatMap { (array) in
array.flatMap { String($0) }.joinWithSeparator(",")
}.joinWithSeparator(",")
输出:
"2.6,6.7,7.2,4.1,3.1,1.2,3.5,2.8,4.5,6.4,1.2,1.3,1.4,1.5,1.6"
请注意,使用,
作为分隔符不是本地化证明,而在法语区域设置中会产生类似“2,6,6,7,7,2”的字符串等等。
答案 1 :(得分:0)
数组符合CustomStringConvertible
,因此您可以使用其description
属性:
nestedArray.description
输出:
[[2.6000000000000001,6.7000000000000002,7.2000000000000002,4.0999999999999996,3.1000000000000001],[1.2,3.5,2.7999999999999998,4.5,6.4000000000000004],[1.2,1.3,1.3999999999999999,1.5,1.6000000000000001]]
这是常规print
函数用于打印此类数组的内容。
答案 2 :(得分:0)
首先,您需要连接或组合您拥有的数组。你可以通过创建另一个数组来做到这一点,就像这样;
let fullArray = array1 + array2 + array3
接下来,您可以打印完整数组
print(fullArray)
这会给你类似的东西
[2.6000000000000001, 6.7000000000000002, 7.2000000000000002, 4.0999999999999996, 3.1000000000000001, 1.2, 3.5, 2.7999999999999998, 4.5, 6.4000000000000004]
或者您可以使用.joinWithSeparator(String:String)方法创建此数组的字符串表示形式,如此
let stringRepresentation = fullArray.joinWithSeparator(",")
print(stringRepresentation)
希望这有帮助!
答案 3 :(得分:0)
从您问题中的描述看来,似乎nestedFunction(...)
的参数应该是具有双值元素的数组([[Double]]
)而不是带有双值元素的数组([Double]
)。
您可以.flatten()
使用nestedArray
到nestedFunction(...)
中的简单嵌套数组reduce
。 Double
将展平数组的String
重要元素转换为一个var array1 = [2.6, 6.7, 7.2, 4.1, 3.1]
var array2 = [1.2, 3.5, 2.8, 4.5, 6.4]
var array3 = [1.2, 1.3, 1.4, 1.5, 1.6]
var nestedArray = [array1, array2, array3]
func nestedFunction (nestedArray: [[Double]])-> String {
return String(nestedArray
.flatten()
.reduce("") { $0 + ", " + String($1) }
.characters.dropFirst(2))
}
let asString = nestedFunction(nestedArray)
// asString = "2.6, 6.7, 7.2, 4.1, 3.1, 1.2, 3.5, 2.8, 4.5, 6.4, 1.2, 1.3, 1.4, 1.5, 1.6"
。
for
作为替代方案,如果您开始使用for ... in
循环,则可以在展平数组上使用var array1 = [2.6, 6.7, 7.2, 4.1, 3.1]
var array2 = [1.2, 3.5, 2.8, 4.5, 6.4]
var array3 = [1.2, 1.3, 1.4, 1.5, 1.6]
var nestedArray = [array1, array2, array3]
func nestedFunction (nestedArray: [[Double]])-> String {
var stringVar: String = ""
var isFirstElement = true
for elem in nestedArray.flatten() {
stringVar += (isFirstElement ? "" : ", ") + String(elem)
isFirstElement = false
}
return stringVar
}
let asString = nestedFunction(nestedArray)
// asString = "2.6, 6.7, 7.2, 4.1, 3.1, 1.2, 3.5, 2.8, 4.5, 6.4, 1.2, 1.3, 1.4, 1.5, 1.6"
,例如:
String
请注意,由于浮点精度有限,使用直接时,某些双值可能最终会出现“杂乱”2.6
表示(例如2.6000000000000001
可能最终为String
)上面的String($1)
初始值设定项(String(elem)
和String
,分别在第一种和第二种方法中)。要兑换此内容,您可以使用以下Double
初始化程序为String
值的String(format: "%.3f", myDoubleValue)
/* \
number of fraction digits (3 here) */
表示设置固定数量的小数位数:
String($1)
例如,分别用String(elem)
和String(format: "%.3f", $1)
替换上述方法中的String(format: "%.3f", elem)
和Double
,以获得您选择的一些小数位数。 resources :advertisers do
resources :experiments
end
值将四舍五入为提供的小数位数。