如何在 Swift 中放置数组的第一个和最后一个元素

2024-02-06

我有一本这样的字典

["Price": ["$00.00 - $200.00", "$200.00 - $400.00", "$600.00 - $800.00"]]

现在我将所有字典值存储在数组中,如下所示

var priceRange: [String] = [String]()
if let obj = currentFilters["Price"] as? [String] {
        self.priceRange = obj
        printD(self.priceRange)
    }

并通过使用Array.first and Array.last方法我将获取数组的第一个元素和最后一个元素的值。

let first = priceRange.first ?? "" // will get("[$00.00 - $200.00]")
let last = priceRange.last ?? ""   // will get("[$600.00 - $800.00]")

但我真正想要的是我想要$00.00 from first and $800 from last进行所需的组合[$00.00 - $800.00].

我怎样才能做到这一点。请帮忙?


你需要采取first value ("$00.00 - $200.00"), then last value ("$600.00 - $800.00"),然后将它们分割为“-" 符号并分别取第一个和最后一个值并将其组合为单个字符串。

let currentFilters = ["Price": ["$00.00 - $200.00", "$200.00 - $400.00", "$600.00 - $800.00"]]

var priceRange: [String] = [String]()
if let obj = currentFilters["Price"] as? [String] {
    priceRange = obj
    print(priceRange)
}

let first = priceRange.first!.split(separator: "-").first!
let last = priceRange.last!.split(separator: "-").last!

let range = "\(first) - \(last)"

为了更好地处理选项,您可以使用这个(NB,我遵循我的过度描述性编码风格。这段代码可以更紧凑)

func totalRange(filters: [String]?) -> String? {
    guard let filters = filters else { return nil }
    guard filters.isEmpty == false else { return nil }
    guard let startComponents = priceRange.first?.split(separator: "-"), startComponents.count == 2 else {
        fatalError("Unexpected Filter format for first filter") // or `return nil`
    }
    guard let endComponents = priceRange.last?.split(separator: "-"), endComponents.count == 2 else {
        fatalError("Unexpected Filter format for last filter") // or `return nil`
    }
    return "\(startComponents.first!) - \(endComponents.last!)"
}
let range = totalRange(filters: currentFilters["Price"])

let range1 = totalRange(filters: currentFilters["Not Exists"])

将上面的代码传递到游乐场。它可以写得更短,但为了描述性,我保持这样

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Swift 中放置数组的第一个和最后一个元素 的相关文章

随机推荐