【问题标题】:Loop over array and return TRUE if value exists如果值存在,则循环遍历数组并返回 TRUE
【发布时间】:2019-01-03 08:57:26
【问题描述】:

我想遍历一个数组,如果一个值存在,我想返回 TRUE。

struct Loops {
    var loopStep: LoopStep
}

struct LoopStep {
    var template: [Template]
}

struct Template {
    var stepType: String
}

let templates: [Template]  = [Template(stepType: "FORM_ONE"), Template(stepType: "FORM_TWO")]
let loopStep = LoopStep(template: templates)

let incompleteSteps = [Loops(loopStep: loopStep)]

我已经使用reduce 尝试过这个,但是不能使这个语法工作

let result = incompleteSteps.reduce(true, $0.loopStep.template.stepType == "FORM_ONE" )

【问题讨论】:

  • 为什么不直接使用 contains(where:) 呢? – 比较stackoverflow.com/questions/29679486/…
  • Offtopic:如果你有固定值,你应该使用枚举。这样,会容易很多:)
  • 不相关:在结构和类名中避免使用复数形式:Loop 而不是 Loops

标签: arrays swift


【解决方案1】:

您只需要使用contains(where:) 来获取bool 返回值,该值指示集合中是否存在与闭包匹配的元素。由于template 本身也是一个Array,如果您想找出Loops 的数组是否包含任何Loopstemplate 数组包含@987654329,则实际上需要嵌套两个contains(where:) 调用@ 符合要求。

let result = incompleteSteps.contains(where: {$0.loopStep.template.contains(where: {$0.stepType == "FORM_ONE"})})

【讨论】:

    猜你喜欢
    • 2012-03-10
    • 1970-01-01
    • 1970-01-01
    • 2021-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-14
    • 2016-06-22
    相关资源
    最近更新 更多