Swift - 如何从数组中找到最大值并确定它来自哪个数组

时间:2015-01-30 21:46:10

标签: arrays swift

    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"

2 个答案:

答案 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版本。