【问题标题】:How to find an item in an object of array如何在数组对象中查找项目
【发布时间】:2020-09-03 14:00:00
【问题描述】:

我有一个 ID 列表。此外,我还有一个对象,其中包含如下结构的数据数组。

[
    foods(
        foodId: 345, 
        category: 10, 
        tools: [10], 
        name: "food name 1"
    ),

    foods(
        foodId: 191, 
        category: 4, 
        tools: [2], 
        name: "food name 2"
    ), 
]

在我的列表中我有列表[345, 191]

当我提供foodId时,我希望有一种机制来访问对象的信息。

我让它与一个内循环和一个外循环一起工作。但我想知道是否有更简单的方法:

ForEach(foodDetails, id: \.self){ item in
    ForEach(self.foods.datas){ ex in
        if(ex.foodId == item){
            Text(ex.name)
    }
}

知道如何让它工作吗?

提前致谢

【问题讨论】:

    标签: arrays swift maps swiftui swift5


    【解决方案1】:

    您可以简单地通过获取 id 匹配的第一个元素来完成

    let result = foodDetails.first(where: {$0.foodId == id})
    
     if let food = result {
            print(food.name ?? "") //if name is optional
            print(food.foodId)
            print(food.category)
        }
    

    你得到的结果是食物吗?具有此 id 的可选结构

    【讨论】:

    • 感谢它确实返回了整个数组。但是,如果我想获取该数组中的一个元素,例如result.name,似乎不起作用。
    • 您将访问它result?.name
    • 这很棒。我将其作为答案提交。只有result?.name 返回和数组,如Optional("Burger")。无论如何要返回实际字符​​串吗?喜欢Burger?我试过resutl?.name[0],但没用。
    • 是的.. 对其进行可选绑定...我认为您的名字是可选的吗?
    • 你能分享你的foods结构吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-08
    • 2014-02-26
    • 1970-01-01
    • 2018-09-18
    • 2014-12-18
    相关资源
    最近更新 更多