# How can I return a value from a recursive function?

**URL:** <https://discourse.nodered.org/t/how-can-i-return-a-value-from-a-recursive-function/70986>\
**Category:** General\
**Tags:** function-node\
**Created:** [21 November 2022 15:35 UTC](https://discourse.nodered.org/t/how-can-i-return-a-value-from-a-recursive-function/70986 "2022-11-21T15:35:33Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![widert](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/widert/32/57557_2.png) [@widert](https://discourse.nodered.org/u/widert)\
**Post date:** [21 November 2022 15:35 UTC](https://discourse.nodered.org/t/how-can-i-return-a-value-from-a-recursive-function/70986/1 "2022-11-21T15:35:33Z")

</div>

Hello, I'm trying to return a value from the following recursive function:

```auto
function recurse(data, found) {
    if (found) {
        return true;
    }

    let iPhones = [
        "06:0f:a4:98:59:42", //T
        "8a:71:de:d1:69:b9", //A
        "8a:e8:09:93:ea:73" //F
    ]

    data.forEach(function (element){
        if(Array.isArray(element)) {
            recurse(element, found);
        } else {
            if (element.hasOwnProperty('mac')) {
                if (iPhones.includes(element['mac'])) {
                    node.warn(element['name']+ ': ' + element['uptime']);
                    found = true;
                    return true;
                }
            }
        }
    });
}

var found = false;
var present = false;
present = recurse(msg.payload, found);

node.warn (present);

```

However, the node.warn line returns _undefined_.

Suggestions?

Thanks  
Tom

---

<div class="post-metadata">

**Author:** ![widert](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/widert/32/57557_2.png) [@widert](https://discourse.nodered.org/u/widert)\
**Post date:** [21 November 2022 16:20 UTC](https://discourse.nodered.org/t/how-can-i-return-a-value-from-a-recursive-function/70986/2 "2022-11-21T16:20:17Z")

</div>

Sorted using context.set("found",true) 😀

---

<div class="post-metadata">

**Author:** ![E1cid](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/e1cid/32/77971_2.png) [@E1cid](https://discourse.nodered.org/u/E1cid)\
**Post date:** [21 November 2022 16:23 UTC](https://discourse.nodered.org/t/how-can-i-return-a-value-from-a-recursive-function/70986/3 "2022-11-21T16:23:08Z")

</div>

You call the recursive() but do not set it to found.

```auto
function recurse(data, found) {
    let iPhones = [
        "06:0f:a4:98:59:42", //T
        "8a:71:de:d1:69:b9", //A
        "8a:e8:09:93:ea:73" //F
    ]

    data.forEach(function (element){
        if(Array.isArray(element)) {
           found = recurse(element, found);   
        } else {
            if (element.hasOwnProperty('mac') && iPhones.includes(element['mac'])) {
                node.warn(element['name']+ ': ' + element['upTime']);
                found = true;
                return found;
            }
        }
    });
    return found;
}

var found = false;
var present = false;
present = recurse(msg.payload, found);

node.warn (present);

```

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/1X/d073cd938eafa2e558d7c2cd59003b3ef4963033.png) [@system](https://discourse.nodered.org/u/system)\
**Post date:** [20 January 2023 16:23 UTC](https://discourse.nodered.org/t/how-can-i-return-a-value-from-a-recursive-function/70986/4 "2023-01-20T16:23:22Z")

</div>

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.
