【问题标题】:I want to filter array我想过滤数组
【发布时间】:2020-03-13 10:57:55
【问题描述】:

我从 API 调用中得到了两个数组, 一个是 nameArray - 其中包含配方名称(menuNameArray = ["pohe","bread","cheese chilli toast"] 还有另一个数组 - 包含这些食谱的价格(menuPriceArray = ["10", "40", "120"]

我从 API 调用中得到了这两个数组。

我在表格视图上显示这两个数组,并且我正在通过 menuNamesArray 进行搜索,因为我想按配方名称进行搜索。

我通过从 menuNameArray 中搜索来获取食谱名称。现在我希望 menuPriceArray 也根据搜索到的 menuName Array 得到更新。 意味着如果我搜索“面包”,那么我必须将价格值设为“40”,并相应地获取其他名称。

我应该如何对第二个数组执行这样的过滤?

我的代码片段 -

//MARK: UISearch result update delegate

func updateSearchResults(for searchController: UISearchController) {

    // here arrFilter is the resulting array to sotre searched items from menuNamesArray
    arrFilter.removeAll(keepingCapacity: false)

    let searchPredicate = NSPredicate(format: "SELF CONTAINS[c] %@", searchController.searchBar.text!)
    let array = (menuNamesArray as NSArray).filtered(using: searchPredicate)

    let result = menuPriceArray.firstIndex(of: array.startIndex)
    arrFilter = array as! [String]

    self.tblSearch.reloadData()

    //here now I got the searched menu names, Now I want prices for searched menu names from menuPrice Array..
}

【问题讨论】:

  • 将两个数组合并为一个包含名称和价格的适当结构的单个数组
  • 你肯定尝试过 something。请edit 使用您的实际代码回答您的问题。如果不表现出至少一些努力,您很可能不会收到答案。

标签: arrays swift filter


【解决方案1】:

切勿使用多个数组作为数据源

Swift 是一种面向对象的语言。好好利用吧。

创建一个结构

struct Menu {
    let name : String
    let price : Double
}

和一个数据源数组

var menues = [Menu]()

通过name过滤数组并得到价格,非常简单直接

if let foundMenu = menues.filter(where: {$0.name == "bread"}) {
    print(foundMenu.price)
}

【讨论】:

    【解决方案2】:

    您可以将两个数组合并为一个字典元素数组。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-26
      • 2019-07-25
      • 1970-01-01
      • 1970-01-01
      • 2021-06-04
      • 1970-01-01
      • 1970-01-01
      • 2021-03-01
      相关资源
      最近更新 更多