如何从元组数组创建编号列表?
How to create numbered list from tuples array?
我有以下列表:
let myList: [(String, Int, Double)] = [("A", 1, 1.5), ("B", 2, 2.5), ("C", 3, 3.5)]
我正在尝试生成以下输出
1) A | 1
2) B | 2
3) C | 3
如果我删除第二个元素,我希望输出也被更新,就像这样
1) A | 1
2) C | 3
我是 Swift 的新手,所以这让我头疼了很多,但我该如何开始这样的事情呢?这是我的职能,但我不确定这是否是正确的开始方式。我想知道如何获得额外的符号并保持数字有序。 (这个值将被传递给 UILabel,所以我必须将所有元素放在一个变量中 result
)
func displayString(myList: [(title: String, id: Int, value: Double)]) -> String {
var result = ""
for i in 0..<myList.count {
}
return result
}
如果您在每一行都需要 1)
和 2)
,请查看使用 enumerated
循环遍历数组,您可以在其中访问索引和项目
看起来像这样:
func displayString(myList: [(title: String,
id: Int,
value: Double)]) -> String
{
var result = ""
// The first iteration, index is 0 and item is ("A", 1, 1.5)
// Second time, index is 1 and item is ("B", 2, 2.5) etc
for (index, item) in myList.enumerated()
{
// Since index starts from 0, you add +1 to start from 1 in the output
result += "\(index+1)) \(item.title) | \(item.id)\n"
}
return result
}
输出将是:
1) A | 1
2) B | 2
3) C | 3
但是,我强烈建议您探索高阶函数,例如 filter, map, reduce
等,这将缩短您为执行这些操作而编写的代码。
例如,您可以通过以下方式获得类似的结果:
func displayStringSwifty(myList: [(title: String,
id: Int,
value: Double)]) -> String
{
return myList.reduce("") { val, item in val + "\(item.0) | \(item.1)\n" }
}
输出将是
A | 1
B | 2
C | 3
更新
Leo Dabus 在评论中提供的更简洁的版本:
myList.map { "\([=14=].title) | \([=14=].id)" }.joined(separator: "\n")
let myList: [(String, Int, Double)] = [
("A", 1, 1.5),
("B", 2, 2.5),
("C", 3, 3.5)]
myList.enumerated().forEach { (index, element) in
print( "\(index+1)) \(element.0) | \(element.1)" )
}
给你
1) A | 1
2) B | 2
3) C | 3
我有以下列表:
let myList: [(String, Int, Double)] = [("A", 1, 1.5), ("B", 2, 2.5), ("C", 3, 3.5)]
我正在尝试生成以下输出
1) A | 1
2) B | 2
3) C | 3
如果我删除第二个元素,我希望输出也被更新,就像这样
1) A | 1
2) C | 3
我是 Swift 的新手,所以这让我头疼了很多,但我该如何开始这样的事情呢?这是我的职能,但我不确定这是否是正确的开始方式。我想知道如何获得额外的符号并保持数字有序。 (这个值将被传递给 UILabel,所以我必须将所有元素放在一个变量中 result
)
func displayString(myList: [(title: String, id: Int, value: Double)]) -> String {
var result = ""
for i in 0..<myList.count {
}
return result
}
如果您在每一行都需要 1)
和 2)
,请查看使用 enumerated
循环遍历数组,您可以在其中访问索引和项目
看起来像这样:
func displayString(myList: [(title: String,
id: Int,
value: Double)]) -> String
{
var result = ""
// The first iteration, index is 0 and item is ("A", 1, 1.5)
// Second time, index is 1 and item is ("B", 2, 2.5) etc
for (index, item) in myList.enumerated()
{
// Since index starts from 0, you add +1 to start from 1 in the output
result += "\(index+1)) \(item.title) | \(item.id)\n"
}
return result
}
输出将是:
1) A | 1
2) B | 2
3) C | 3
但是,我强烈建议您探索高阶函数,例如 filter, map, reduce
等,这将缩短您为执行这些操作而编写的代码。
例如,您可以通过以下方式获得类似的结果:
func displayStringSwifty(myList: [(title: String,
id: Int,
value: Double)]) -> String
{
return myList.reduce("") { val, item in val + "\(item.0) | \(item.1)\n" }
}
输出将是
A | 1
B | 2
C | 3
更新
Leo Dabus 在评论中提供的更简洁的版本:
myList.map { "\([=14=].title) | \([=14=].id)" }.joined(separator: "\n")
let myList: [(String, Int, Double)] = [
("A", 1, 1.5),
("B", 2, 2.5),
("C", 3, 3.5)]
myList.enumerated().forEach { (index, element) in
print( "\(index+1)) \(element.0) | \(element.1)" )
}
给你
1) A | 1
2) B | 2
3) C | 3