var amya = (1)
var amyb = (2)
var amyc = (3)
var amyd = (3)
var amye = (9)
var amyf = (3)
var amyg = (4)
var amyh = (4)
var amyi = (10)
var amyj = (1)
///创建包含所有值的数组
let users1 = [amya,amyb,amyc,amyd,amye,amyf,amyg,amyh,amyi,amyj]
////查找最大数量
let maxnum = maxElement(users1)
////结果是10
我的问题是如何找到结果的变量" 10"来自于没有做大量的if语句。
我希望结果是" amyi"
答案 0 :(得分:3)
实际上我认为问题是返回变量名而不是值。你可以通过Swift词典实现它。示例代码如下:
let users1 = [
"amya": 1,
"amyb": 2,
"amyc": 10
]
let max = users1.values.maxElement()
func allKeysForValue<K, V : Equatable>(dict: [K : V], val: V) -> [K] {
return dict.filter{ $0.1 == val }.map{ $0.0 }
}
let keys = allKeysForValue(users1, val: max!)
print(keys)
结果是:"[amyc]"
它将找到结果最大值来自哪个变量,并将变量名称作为键返回。
答案 1 :(得分:-1)
有一个比上述答案更简单的方法。如果您将所有值都放在一个数组中,并且希望找到最大的值,则只需执行以下操作:
let array = [1,10,6,3,5,9,7]
let sortedArray = array.sorted()
let largestElement = sortedArray.last
上面的代码将对数组进行排序,然后最后一个元素将始终是最大的。这应该可以在Swift 5上使用。我不知道以前的Swift版本。