Loop over array and return TRUE if value exists





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ height:90px;width:728px;box-sizing:border-box;
}







0















I would like to iterate over an array and if a value exists, I would like to return 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)]


I have tried this using reduce however cannot make this syntax work



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









share|improve this question


















  • 3





    Why not simply use contains(where:) ? – Compare stackoverflow.com/questions/29679486/…

    – Martin R
    Jan 3 at 9:01






  • 2





    Offtopic: If you got fixed values, you should use an enum. That way, it will be a lot easier :)

    – J. Doe
    Jan 3 at 9:02






  • 1





    Unrelated: Avoid plurals in struct and class names : Loop instead of Loops

    – ielyamani
    Jan 3 at 9:06


















0















I would like to iterate over an array and if a value exists, I would like to return 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)]


I have tried this using reduce however cannot make this syntax work



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









share|improve this question


















  • 3





    Why not simply use contains(where:) ? – Compare stackoverflow.com/questions/29679486/…

    – Martin R
    Jan 3 at 9:01






  • 2





    Offtopic: If you got fixed values, you should use an enum. That way, it will be a lot easier :)

    – J. Doe
    Jan 3 at 9:02






  • 1





    Unrelated: Avoid plurals in struct and class names : Loop instead of Loops

    – ielyamani
    Jan 3 at 9:06














0












0








0








I would like to iterate over an array and if a value exists, I would like to return 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)]


I have tried this using reduce however cannot make this syntax work



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









share|improve this question














I would like to iterate over an array and if a value exists, I would like to return 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)]


I have tried this using reduce however cannot make this syntax work



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






arrays swift






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Jan 3 at 8:57









Harry BlueHarry Blue

838927




838927








  • 3





    Why not simply use contains(where:) ? – Compare stackoverflow.com/questions/29679486/…

    – Martin R
    Jan 3 at 9:01






  • 2





    Offtopic: If you got fixed values, you should use an enum. That way, it will be a lot easier :)

    – J. Doe
    Jan 3 at 9:02






  • 1





    Unrelated: Avoid plurals in struct and class names : Loop instead of Loops

    – ielyamani
    Jan 3 at 9:06














  • 3





    Why not simply use contains(where:) ? – Compare stackoverflow.com/questions/29679486/…

    – Martin R
    Jan 3 at 9:01






  • 2





    Offtopic: If you got fixed values, you should use an enum. That way, it will be a lot easier :)

    – J. Doe
    Jan 3 at 9:02






  • 1





    Unrelated: Avoid plurals in struct and class names : Loop instead of Loops

    – ielyamani
    Jan 3 at 9:06








3




3





Why not simply use contains(where:) ? – Compare stackoverflow.com/questions/29679486/…

– Martin R
Jan 3 at 9:01





Why not simply use contains(where:) ? – Compare stackoverflow.com/questions/29679486/…

– Martin R
Jan 3 at 9:01




2




2





Offtopic: If you got fixed values, you should use an enum. That way, it will be a lot easier :)

– J. Doe
Jan 3 at 9:02





Offtopic: If you got fixed values, you should use an enum. That way, it will be a lot easier :)

– J. Doe
Jan 3 at 9:02




1




1





Unrelated: Avoid plurals in struct and class names : Loop instead of Loops

– ielyamani
Jan 3 at 9:06





Unrelated: Avoid plurals in struct and class names : Loop instead of Loops

– ielyamani
Jan 3 at 9:06












1 Answer
1






active

oldest

votes


















2














You simply need to use contains(where:) to get a bool return value indicating whether an element matching a closure exists in the collection or not. Since template is an Array itself as well, you actually need to nest two contains(where:) calls if you want to find out if an array of Loops contains any Loops whose template array contains a Template with the matching requirement.



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





share|improve this answer
























    Your Answer






    StackExchange.ifUsing("editor", function () {
    StackExchange.using("externalEditor", function () {
    StackExchange.using("snippets", function () {
    StackExchange.snippets.init();
    });
    });
    }, "code-snippets");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "1"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: true,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: 10,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });














    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54019045%2floop-over-array-and-return-true-if-value-exists%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    1 Answer
    1






    active

    oldest

    votes








    1 Answer
    1






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    2














    You simply need to use contains(where:) to get a bool return value indicating whether an element matching a closure exists in the collection or not. Since template is an Array itself as well, you actually need to nest two contains(where:) calls if you want to find out if an array of Loops contains any Loops whose template array contains a Template with the matching requirement.



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





    share|improve this answer




























      2














      You simply need to use contains(where:) to get a bool return value indicating whether an element matching a closure exists in the collection or not. Since template is an Array itself as well, you actually need to nest two contains(where:) calls if you want to find out if an array of Loops contains any Loops whose template array contains a Template with the matching requirement.



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





      share|improve this answer


























        2












        2








        2







        You simply need to use contains(where:) to get a bool return value indicating whether an element matching a closure exists in the collection or not. Since template is an Array itself as well, you actually need to nest two contains(where:) calls if you want to find out if an array of Loops contains any Loops whose template array contains a Template with the matching requirement.



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





        share|improve this answer













        You simply need to use contains(where:) to get a bool return value indicating whether an element matching a closure exists in the collection or not. Since template is an Array itself as well, you actually need to nest two contains(where:) calls if you want to find out if an array of Loops contains any Loops whose template array contains a Template with the matching requirement.



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






        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Jan 3 at 9:01









        Dávid PásztorDávid Pásztor

        23k83152




        23k83152
































            draft saved

            draft discarded




















































            Thanks for contributing an answer to Stack Overflow!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54019045%2floop-over-array-and-return-true-if-value-exists%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            MongoDB - Not Authorized To Execute Command

            Npm cannot find a required file even through it is in the searched directory

            in spring boot 2.1 many test slices are not allowed anymore due to multiple @BootstrapWith