如何获得最低和最低NSString / String数组中的最大值?

时间:2015-05-19 11:32:18

标签: ios arrays swift

我以NSString的形式从网站获取数据。数据可以只是整数,有时是带有表示附加信息的附加“a”/“b”的整数,或者“#”表示没有数据可用。我把数据放到了一个数组中:

var labelMin = "-"
var labelMax = "-"

var arr = ["55a", "95a", "66", "25", "88b", "#"]

我的问题是:

我如何获得最低&考虑该阵列中的所有对象的最大值(例如,也考虑“95a”中的“95”,但不需要考虑“#”),并随后在labelMin.text&上打印出来。 labelMax.text?

[编辑:实际代码将在数组中有24个对象,对应于每小时的数据,这是不断变化的]

3 个答案:

答案 0 :(得分:1)

这是CS 101的东西。

为max和min创建int变量。将min设置为Int.max,将max设置为Int.min

写一个循环遍历数组的for循环,取每个项的整数值,如果它小于min,则将其保存到min,如果它大于max,则保存它到最大

答案 1 :(得分:1)

@ user3815344的答案有效,但您可以使用minElementmaxElement来检索最小值和最大值,从而简化它。例如:

let arr = ["55a", "95a", "66", "25", "88b", "#"]
let numbers: [Int] = arr.reduce([]) {
    if let num = "".join($1.componentsSeparatedByCharactersInSet(NSCharacterSet.decimalDigitCharacterSet().invertedSet)).toInt() {
        return $0 + [num]
    }

    return $0
}

minElement(numbers) // 25
maxElement(numbers) // 95

针对Swift 2进行了更新:toInt已替换为Int上的可用初始值设定项String,而minElementmaxElement已被替换为let arr = ["55a", "95a", "66", "25", "88b", "#"] let numbers: [Int] = arr.reduce([]) { if let num = Int("".join($1.componentsSeparatedByCharactersInSet(NSCharacterSet.decimalDigitCharacterSet().invertedSet))) { return $0 + [num] } return $0 } let min: Int? = numbers.minElement() // 25 let max: Int? = numbers.maxElement() // 95 协议扩展:

ConfigurationManager.OpenExeConfiguration

答案 2 :(得分:0)

    var arr = ["55a", "95a", "66", "25", "88b", "#"]
    var minval = 0
    var maxval = 0
    for val in arr{
        var Number = "".join(val.componentsSeparatedByCharactersInSet(NSCharacterSet.decimalDigitCharacterSet().invertedSet))
        if Number.toInt() >= 0{
            if val == arr[0]{
                minval = Number.toInt()!
                maxval = minval
            } else{
                if Number.toInt() < minval{
                    minval = Number.toInt()!
                }
                if Number.toInt() > maxval{
                    maxval = Number.toInt()!
                }
            }
        }
    }
    println(maxval)
    println(minval)

以上代码适用于您的案例