# Get strings to new array

**URL:** <https://discourse.nodered.org/t/get-strings-to-new-array/45213>\
**Category:** General\
**Created:** [5 May 2021 12:21 UTC](https://discourse.nodered.org/t/get-strings-to-new-array/45213 "2021-05-05T12:21:02Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![MAHRULEZ](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/mahrulez/32/41276_2.png) [@MAHRULEZ](https://discourse.nodered.org/u/MAHRULEZ)\
**Post date:** [5 May 2021 12:21 UTC](https://discourse.nodered.org/t/get-strings-to-new-array/45213/1 "2021-05-05T12:21:02Z")

</div>

Hello, i tried to get product names out of an object array in a new array in a function node but i get an error and i do not know how to get it working.  
Can someone help me?

function node:  
var abgelaufen = {};  
var abgelaufenname = ;

abgelaufen.laenge = msg.payload.overdue\_products.length;  
for (var idx=0; idx\<=abgelaufen.laenge; idx++){  
abgelaufenname.push({payload:msg.payload.overdue\_products[idx].product.name});  
}  
msg.payload = abgelaufenname;  
return [msg,abgelaufen];

error:  
"TypeError: Cannot read property 'product' of undefined"

Thanks to all in advance.

---

<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:** [5 May 2021 12:26 UTC](https://discourse.nodered.org/t/get-strings-to-new-array/45213/2 "2021-05-05T12:26:39Z")

</div>

> [@MAHRULEZ](#):
>
> for (var idx=0; idx\<=abgelaufen.laenge; idx++){

Just at a quick glance, You are doing `idx <= length`. But the length is 1 longer than index, as idx starts at 0. try `idx < length`.

---

<div class="post-metadata">

**Author:** ![Colin](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/colin/32/17040_2.png) [@Colin](https://discourse.nodered.org/u/Colin)\
**Post date:** [5 May 2021 12:38 UTC](https://discourse.nodered.org/t/get-strings-to-new-array/45213/3 "2021-05-05T12:38:09Z")

</div>

> [@MAHRULEZ](#):
>
> return [msg,abgelaufen];

That should probably be  
`return msg`

If posting code in the future please use the technique described in this post so the forum does not mess with text. [How to share code or flow json](https://discourse.nodered.org/t/how-to-share-code-or-flow-json/506)

---

<div class="post-metadata">

**Author:** ![MAHRULEZ](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/mahrulez/32/41276_2.png) [@MAHRULEZ](https://discourse.nodered.org/u/MAHRULEZ)\
**Post date:** [6 May 2021 15:47 UTC](https://discourse.nodered.org/t/get-strings-to-new-array/45213/4 "2021-05-06T15:47:10Z")

</div>

Thanks, now i get an output. But only for the first element in the array. The other ones are lost.

---

<div class="post-metadata">

**Author:** ![Colin](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/colin/32/17040_2.png) [@Colin](https://discourse.nodered.org/u/Colin)\
**Post date:** [6 May 2021 15:58 UTC](https://discourse.nodered.org/t/get-strings-to-new-array/45213/5 "2021-05-06T15:58:16Z")

</div>

Show us what you have in the function now

---

<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:** [6 May 2021 16:01 UTC](https://discourse.nodered.org/t/get-strings-to-new-array/45213/6 "2021-05-06T16:01:54Z")

</div>

I have no idea, as I have no idea what your input object is, or what you wish to be returned.

---

<div class="post-metadata">

**Author:** ![MAHRULEZ](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/mahrulez/32/41276_2.png) [@MAHRULEZ](https://discourse.nodered.org/u/MAHRULEZ)\
**Post date:** [6 May 2021 16:13 UTC](https://discourse.nodered.org/t/get-strings-to-new-array/45213/7 "2021-05-06T16:13:44Z")

</div>

````auto
var abgelaufenname = [];
var abgelaufen = {};
var idx = 0;

abgelaufen.laenge = msg.payload.overdue_products.length;
for (idx=0; idx<abgelaufen.laenge; idx++){
    abgelaufenname.push({payload:msg.payload.overdue_products[idx].product.name});
}
msg.payload = abgelaufenname;
return msg;```

Sorry, my fault.
I changed

````

msg.payload = abgelaufenname;

```auto
to

```

msg.payload = abgelaufenname;

```auto
Now everything is output with msg.payload.payload 
msg.payload would be better but i can work with this also.
```

---

<div class="post-metadata">

**Author:** ![Colin](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/colin/32/17040_2.png) [@Colin](https://discourse.nodered.org/u/Colin)\
**Post date:** [6 May 2021 16:19 UTC](https://discourse.nodered.org/t/get-strings-to-new-array/45213/8 "2021-05-06T16:19:38Z")

</div>

> [@MAHRULEZ](#):
>
> Now everything is output with msg.payload.payload

If I understand what you mean that is because you have  
`abgelaufenname.push({payload:msg.payload.overdue_products[idx].product.name})`

so you are pushing objects to the array. If you just want the values then try  
`abgelaufenname.push(msg.payload.overdue_products[idx].product.name)`  
which will push just the values.

---

<div class="post-metadata">

**Author:** ![MAHRULEZ](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/mahrulez/32/41276_2.png) [@MAHRULEZ](https://discourse.nodered.org/u/MAHRULEZ)\
**Post date:** [6 May 2021 16:25 UTC](https://discourse.nodered.org/t/get-strings-to-new-array/45213/9 "2021-05-06T16:25:12Z")

</div>

Thank you very much!  
Everything is working now with msg.payload  
Just for Information what i am doing.  
I tried to get an daily overview/alert via telegram of my overdue food products via restapi from my grocy erp from here [grocy - ERP für deinen Kühlschrank](https://grocy.info/de)  
Everything is working now as expected.  
Thanks to all!  
🙂 👍

---

<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 May 2021 16:26 UTC](https://discourse.nodered.org/t/get-strings-to-new-array/45213/10 "2021-05-20T16:26:07Z")

</div>

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