在字典[Swift / iOS]中向上舍入到最接近的整数键值

时间:2015-06-26 17:23:05

标签: ios objective-c swift

我有一个类似的基本字典列表:

let fanFlow:  [Int: String] = [100: "25 m/s", 350: "34 m/s", 420: "42 m/s"]

我正在努力使它如果我在这些数字的中间有一个值,它将向上舍入到字典列表中的下一个最大数字整数。

例如:如果我的值为“250”,它会将其向上舍入到列表中的下一个数字,即“350”,返回“34 m / s”。

试图谷歌这个,找不到任何可以帮助我的东西。 任何帮助都会很棒!

谢谢!

2 个答案:

答案 0 :(得分:1)

怎么样:

let fanFlow = [100: "25 m/s", 350: "34 m/s", 420: "42 m/s"]

func nextHighest(n: Int) -> String? {
  return fanFlow
    .keys
    .filter { $0 > n }
    .minElement()
    .map { fanFlow[$0]! }
}

nextHighest(250) // "34 m/s"

或者,在Swift 1.2中:

let fanFlow = [100: "25 m/s", 350: "34 m/s", 420: "42 m/s"]

func nextHighest(n: Int) -> String? {

  let higher = fanFlow.keys.filter { $0 > n }.array

  return higher.isEmpty ? nil : fanFlow[minElement(higher)]!

}

答案 1 :(得分:1)

let fanFlow:  [Int: String] = [100: "25 m/s", 350: "34 m/s", 420: "42 m/s"]
let fanFlowKeys = fanFlow.keys.array.sorted(<)

func getFanFlow(input:Int) -> String {
    for key in fanFlowKeys {
        if input <= key {
            return fanFlow[key]!
        }
    }
    return ""
}

getFanFlow(250)    // "34 m/s"