searching an item that has an array of items and so on node.js










1















Imagine I have an Item that has an array of Items and any of the Items in the Array has an array of Items and so on.
So i have an infinite level of Items and i want to know how to get to all of them in node.js.
Like this:



 Item1
/
Item2 Item3
/
Item4 Item5


Item1 is an array.
Item2 and Item3 another array and so on.










share|improve this question
























  • You'll find we don't have that much imagination. :-) Maybe show us more of what you're trying to do?

    – Jim B.
    Nov 3 '18 at 17:15











  • check this out.

    – lependu
    Nov 3 '18 at 17:17











  • I've edit it with a diagram.

    – Francisco Barril
    Nov 3 '18 at 17:24















1















Imagine I have an Item that has an array of Items and any of the Items in the Array has an array of Items and so on.
So i have an infinite level of Items and i want to know how to get to all of them in node.js.
Like this:



 Item1
/
Item2 Item3
/
Item4 Item5


Item1 is an array.
Item2 and Item3 another array and so on.










share|improve this question
























  • You'll find we don't have that much imagination. :-) Maybe show us more of what you're trying to do?

    – Jim B.
    Nov 3 '18 at 17:15











  • check this out.

    – lependu
    Nov 3 '18 at 17:17











  • I've edit it with a diagram.

    – Francisco Barril
    Nov 3 '18 at 17:24













1












1








1








Imagine I have an Item that has an array of Items and any of the Items in the Array has an array of Items and so on.
So i have an infinite level of Items and i want to know how to get to all of them in node.js.
Like this:



 Item1
/
Item2 Item3
/
Item4 Item5


Item1 is an array.
Item2 and Item3 another array and so on.










share|improve this question
















Imagine I have an Item that has an array of Items and any of the Items in the Array has an array of Items and so on.
So i have an infinite level of Items and i want to know how to get to all of them in node.js.
Like this:



 Item1
/
Item2 Item3
/
Item4 Item5


Item1 is an array.
Item2 and Item3 another array and so on.







arrays node.js recursion






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 14 '18 at 4:22









tech_boy

50111




50111










asked Nov 3 '18 at 17:13









Francisco BarrilFrancisco Barril

247




247












  • You'll find we don't have that much imagination. :-) Maybe show us more of what you're trying to do?

    – Jim B.
    Nov 3 '18 at 17:15











  • check this out.

    – lependu
    Nov 3 '18 at 17:17











  • I've edit it with a diagram.

    – Francisco Barril
    Nov 3 '18 at 17:24

















  • You'll find we don't have that much imagination. :-) Maybe show us more of what you're trying to do?

    – Jim B.
    Nov 3 '18 at 17:15











  • check this out.

    – lependu
    Nov 3 '18 at 17:17











  • I've edit it with a diagram.

    – Francisco Barril
    Nov 3 '18 at 17:24
















You'll find we don't have that much imagination. :-) Maybe show us more of what you're trying to do?

– Jim B.
Nov 3 '18 at 17:15





You'll find we don't have that much imagination. :-) Maybe show us more of what you're trying to do?

– Jim B.
Nov 3 '18 at 17:15













check this out.

– lependu
Nov 3 '18 at 17:17





check this out.

– lependu
Nov 3 '18 at 17:17













I've edit it with a diagram.

– Francisco Barril
Nov 3 '18 at 17:24





I've edit it with a diagram.

– Francisco Barril
Nov 3 '18 at 17:24












1 Answer
1






active

oldest

votes


















0















I have an Item that has an array of Items ... i want to know how to get to all of them




Recursively flatten each element in the array if it's an array, otherwise append it.






/* setup test input */
const tree = [
"leaf_A_1",
"leaf_A_2",
[
"leaf_B_1",
"leaf_B_2",
[
"leaf_C_1",
"leaf_C_2",
]
]
]
console.log("INPUT:n", tree)

/* run test */
const leaves = flatten(tree)
console.log("OUTPUT:", leaves) // outputs leaf nodes in a flat array

// flatten() is a recursive function takes an array that *may* contain nested arrays, and returns an array containing all leaf elements without nesting.
function flatten(arr)
return arr.reduce(expandNestedArraysOrAppend, )


function expandNestedArraysOrAppend(accum, element, idx)
if (Array.isArray(element))
return [...accum, ...flatten(element)] // if we have an array, flatten it before appending

return [...accum, element] // if not an array, just append





Hope this helps. Cheers!






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%2f53133664%2fsearching-an-item-that-has-an-array-of-items-and-so-on-node-js%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









    0















    I have an Item that has an array of Items ... i want to know how to get to all of them




    Recursively flatten each element in the array if it's an array, otherwise append it.






    /* setup test input */
    const tree = [
    "leaf_A_1",
    "leaf_A_2",
    [
    "leaf_B_1",
    "leaf_B_2",
    [
    "leaf_C_1",
    "leaf_C_2",
    ]
    ]
    ]
    console.log("INPUT:n", tree)

    /* run test */
    const leaves = flatten(tree)
    console.log("OUTPUT:", leaves) // outputs leaf nodes in a flat array

    // flatten() is a recursive function takes an array that *may* contain nested arrays, and returns an array containing all leaf elements without nesting.
    function flatten(arr)
    return arr.reduce(expandNestedArraysOrAppend, )


    function expandNestedArraysOrAppend(accum, element, idx)
    if (Array.isArray(element))
    return [...accum, ...flatten(element)] // if we have an array, flatten it before appending

    return [...accum, element] // if not an array, just append





    Hope this helps. Cheers!






    share|improve this answer



























      0















      I have an Item that has an array of Items ... i want to know how to get to all of them




      Recursively flatten each element in the array if it's an array, otherwise append it.






      /* setup test input */
      const tree = [
      "leaf_A_1",
      "leaf_A_2",
      [
      "leaf_B_1",
      "leaf_B_2",
      [
      "leaf_C_1",
      "leaf_C_2",
      ]
      ]
      ]
      console.log("INPUT:n", tree)

      /* run test */
      const leaves = flatten(tree)
      console.log("OUTPUT:", leaves) // outputs leaf nodes in a flat array

      // flatten() is a recursive function takes an array that *may* contain nested arrays, and returns an array containing all leaf elements without nesting.
      function flatten(arr)
      return arr.reduce(expandNestedArraysOrAppend, )


      function expandNestedArraysOrAppend(accum, element, idx)
      if (Array.isArray(element))
      return [...accum, ...flatten(element)] // if we have an array, flatten it before appending

      return [...accum, element] // if not an array, just append





      Hope this helps. Cheers!






      share|improve this answer

























        0












        0








        0








        I have an Item that has an array of Items ... i want to know how to get to all of them




        Recursively flatten each element in the array if it's an array, otherwise append it.






        /* setup test input */
        const tree = [
        "leaf_A_1",
        "leaf_A_2",
        [
        "leaf_B_1",
        "leaf_B_2",
        [
        "leaf_C_1",
        "leaf_C_2",
        ]
        ]
        ]
        console.log("INPUT:n", tree)

        /* run test */
        const leaves = flatten(tree)
        console.log("OUTPUT:", leaves) // outputs leaf nodes in a flat array

        // flatten() is a recursive function takes an array that *may* contain nested arrays, and returns an array containing all leaf elements without nesting.
        function flatten(arr)
        return arr.reduce(expandNestedArraysOrAppend, )


        function expandNestedArraysOrAppend(accum, element, idx)
        if (Array.isArray(element))
        return [...accum, ...flatten(element)] // if we have an array, flatten it before appending

        return [...accum, element] // if not an array, just append





        Hope this helps. Cheers!






        share|improve this answer














        I have an Item that has an array of Items ... i want to know how to get to all of them




        Recursively flatten each element in the array if it's an array, otherwise append it.






        /* setup test input */
        const tree = [
        "leaf_A_1",
        "leaf_A_2",
        [
        "leaf_B_1",
        "leaf_B_2",
        [
        "leaf_C_1",
        "leaf_C_2",
        ]
        ]
        ]
        console.log("INPUT:n", tree)

        /* run test */
        const leaves = flatten(tree)
        console.log("OUTPUT:", leaves) // outputs leaf nodes in a flat array

        // flatten() is a recursive function takes an array that *may* contain nested arrays, and returns an array containing all leaf elements without nesting.
        function flatten(arr)
        return arr.reduce(expandNestedArraysOrAppend, )


        function expandNestedArraysOrAppend(accum, element, idx)
        if (Array.isArray(element))
        return [...accum, ...flatten(element)] // if we have an array, flatten it before appending

        return [...accum, element] // if not an array, just append





        Hope this helps. Cheers!






        /* setup test input */
        const tree = [
        "leaf_A_1",
        "leaf_A_2",
        [
        "leaf_B_1",
        "leaf_B_2",
        [
        "leaf_C_1",
        "leaf_C_2",
        ]
        ]
        ]
        console.log("INPUT:n", tree)

        /* run test */
        const leaves = flatten(tree)
        console.log("OUTPUT:", leaves) // outputs leaf nodes in a flat array

        // flatten() is a recursive function takes an array that *may* contain nested arrays, and returns an array containing all leaf elements without nesting.
        function flatten(arr)
        return arr.reduce(expandNestedArraysOrAppend, )


        function expandNestedArraysOrAppend(accum, element, idx)
        if (Array.isArray(element))
        return [...accum, ...flatten(element)] // if we have an array, flatten it before appending

        return [...accum, element] // if not an array, just append





        /* setup test input */
        const tree = [
        "leaf_A_1",
        "leaf_A_2",
        [
        "leaf_B_1",
        "leaf_B_2",
        [
        "leaf_C_1",
        "leaf_C_2",
        ]
        ]
        ]
        console.log("INPUT:n", tree)

        /* run test */
        const leaves = flatten(tree)
        console.log("OUTPUT:", leaves) // outputs leaf nodes in a flat array

        // flatten() is a recursive function takes an array that *may* contain nested arrays, and returns an array containing all leaf elements without nesting.
        function flatten(arr)
        return arr.reduce(expandNestedArraysOrAppend, )


        function expandNestedArraysOrAppend(accum, element, idx)
        if (Array.isArray(element))
        return [...accum, ...flatten(element)] // if we have an array, flatten it before appending

        return [...accum, element] // if not an array, just append






        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered Nov 14 '18 at 2:58









        jonathangersamjonathangersam

        715210




        715210





























            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%2f53133664%2fsearching-an-item-that-has-an-array-of-items-and-so-on-node-js%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

            How to how show current date and time by default on contact form 7 in WordPress without taking input from user in datetimepicker

            Syphilis

            Darth Vader #20