# Function node to filter 2 values out

**URL:** <https://discourse.nodered.org/t/function-node-to-filter-2-values-out/13296>\
**Category:** General\
**Created:** [15 July 2019 12:06 UTC](https://discourse.nodered.org/t/function-node-to-filter-2-values-out/13296 "2019-07-15T12:06:48Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![wsuess](https://avatars.discourse-cdn.com/v4/letter/w/53a042/32.png) [@wsuess](https://discourse.nodered.org/u/wsuess)\
**Post date:** [15 July 2019 12:06 UTC](https://discourse.nodered.org/t/function-node-to-filter-2-values-out/13296/1 "2019-07-15T12:06:48Z")

</div>

Hi to all,  
How can I filter out 2 quality check (qc) values in my payload? Can I use a function node?  
T\_Zone\_2\_IST\_Temperatur  
**T\_Zone\_2\_IST\_Temperatur\_qc**  
T\_Zone\_2\_SOLL\_Temperatur  
**T\_Zone\_2\_SOLL\_Temperatur\_qc**

![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/2X/4/42285e35a081e2d7c2d1cdb39d8937de61758944.png)

Many thanks for help  
Wolfgang

---

<div class="post-metadata">

**Author:** ![ukmoose](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/ukmoose/32/13_2.png) [@ukmoose](https://discourse.nodered.org/u/ukmoose)\
**Post date:** [15 July 2019 12:11 UTC](https://discourse.nodered.org/t/function-node-to-filter-2-values-out/13296/2 "2019-07-15T12:11:20Z")

</div>

Yes you will be able to do it in a function node, add a debug node and show us an example of the message that contains them if you need more advice

---

<div class="post-metadata">

**Author:** ![dceejay](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/dceejay/32/38_2.png) [@dceejay](https://discourse.nodered.org/u/dceejay)\
**Post date:** [15 July 2019 12:26 UTC](https://discourse.nodered.org/t/function-node-to-filter-2-values-out/13296/3 "2019-07-15T12:26:12Z")

</div>

or maybe a change node set to delete them ?

---

<div class="post-metadata">

**Author:** ![wsuess](https://avatars.discourse-cdn.com/v4/letter/w/53a042/32.png) [@wsuess](https://discourse.nodered.org/u/wsuess)\
**Post date:** [15 July 2019 12:26 UTC](https://discourse.nodered.org/t/function-node-to-filter-2-values-out/13296/4 "2019-07-15T12:26:32Z")

</div>

15.7.2019, 14:12:44.075[node: 1ebcf650.656f2a](https://nppddd-visualflowcreator.eu1.mindsphere.io/ui/#)1522a388105841f081acef04a2782eb8/Extruder/T\_Zone\_2\_IST\_Temperatur,T\_Zone\_2\_SOLL\_Temperatur: msg: array[2000]

[object, object, object, object, object, object, object, object, object, object …]

---

<div class="post-metadata">

**Author:** ![ukmoose](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/ukmoose/32/13_2.png) [@ukmoose](https://discourse.nodered.org/u/ukmoose)\
**Post date:** [15 July 2019 13:30 UTC](https://discourse.nodered.org/t/function-node-to-filter-2-values-out/13296/5 "2019-07-15T13:30:11Z")

</div>

So you are sending an array with thousands objects.  
How wide is your screen? Can you actually visualise all this data?

Where are you getting this data from?  
Is it a database?  
Are you building it in your flow? It might be better to not add it in the first place rather than try to filter it out.  
However if you do want help to filter it out, seeing what one of this objects contain is important.  
[https://nodered.org/docs/user-guide/messages](https://nodered.org/docs/user-guide/messages)

---

<div class="post-metadata">

**Author:** ![wsuess](https://avatars.discourse-cdn.com/v4/letter/w/53a042/32.png) [@wsuess](https://discourse.nodered.org/u/wsuess)\
**Post date:** [15 July 2019 14:15 UTC](https://discourse.nodered.org/t/function-node-to-filter-2-values-out/13296/7 "2019-07-15T14:15:11Z")

</div>

![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/2X/2/2f59e1d651d2f51279cef1e9c74dee509359d4fb.png)  
Thats what I tried

---

<div class="post-metadata">

**Author:** ![wsuess](https://avatars.discourse-cdn.com/v4/letter/w/53a042/32.png) [@wsuess](https://discourse.nodered.org/u/wsuess)\
**Post date:** [15 July 2019 14:16 UTC](https://discourse.nodered.org/t/function-node-to-filter-2-values-out/13296/8 "2019-07-15T14:16:33Z")

</div>

Thats how the payload looks like!

[{"T\_Zone\_2\_SOLL\_Temperatur":210,"T\_Zone\_2\_IST\_Temperatur":114.7,"T\_Zone\_2\_SOLL\_Temperatur\_qc":0,"\_time":"2019-07-15T04:51:42.031Z","T\_Zone\_2\_IST\_Temperatur\_qc":0},

{"T\_Zone\_2\_SOLL\_Temperatur":210,"T\_Zone\_2\_IST\_Temperatur":114.7,"T\_Zone\_2\_SOLL\_Temperatur\_qc":0,"\_time":"2019-07-15T04:51:42.209Z","T\_Zone\_2\_IST\_Temperatur\_qc":0},

{"T\_Zone\_2\_SOLL\_Temperatur":210,"T\_Zone\_2\_IST\_Temperatur":114.7,"T\_Zone\_2\_SOLL\_Temperatur\_qc":0,"\_time":"2019-07-15T04:51:43.200Z","T\_Zone\_2\_IST\_Temperatur\_qc":0},

---

<div class="post-metadata">

**Author:** ![bakman2](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/bakman2/32/6207_2.png) [@bakman2](https://discourse.nodered.org/u/bakman2)\
**Post date:** [15 July 2019 14:18 UTC](https://discourse.nodered.org/t/function-node-to-filter-2-values-out/13296/9 "2019-07-15T14:18:39Z")

</div>

delete: `msg.payload.T_Zone_2_IST_Temperatur_qc`

---

<div class="post-metadata">

**Author:** ![wsuess](https://avatars.discourse-cdn.com/v4/letter/w/53a042/32.png) [@wsuess](https://discourse.nodered.org/u/wsuess)\
**Post date:** [16 July 2019 12:36 UTC](https://discourse.nodered.org/t/function-node-to-filter-2-values-out/13296/10 "2019-07-16T12:36:16Z")

</div>

No change!  
 ![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/2X/f/f404606927a34e9654073f510935062d122447be.png)

It is still their

 ![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/2X/7/7828b7eaf7cc7996dd42d929f09141b125745a9b.png)

---

<div class="post-metadata">

**Author:** ![bakman2](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/bakman2/32/6207_2.png) [@bakman2](https://discourse.nodered.org/u/bakman2)\
**Post date:** [16 July 2019 14:08 UTC](https://discourse.nodered.org/t/function-node-to-filter-2-values-out/13296/11 "2019-07-16T14:08:18Z")

</div>

What is the output of msg.payload. (debug node screenshot) - i suspect an array.

---

<div class="post-metadata">

**Author:** ![ukmoose](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/ukmoose/32/13_2.png) [@ukmoose](https://discourse.nodered.org/u/ukmoose)\
**Post date:** [16 July 2019 14:21 UTC](https://discourse.nodered.org/t/function-node-to-filter-2-values-out/13296/12 "2019-07-16T14:21:09Z")

</div>

That would work if you only had one object, but you have 2000 in an array. Which is why if this is coming from a database, it might be more efficient to fix what puts in there in the first place.

---

<div class="post-metadata">

**Author:** ![shrickus](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/shrickus/32/517_2.png) [@shrickus](https://discourse.nodered.org/u/shrickus)\
**Post date:** [16 July 2019 17:33 UTC](https://discourse.nodered.org/t/function-node-to-filter-2-values-out/13296/13 "2019-07-16T17:33:14Z")

</div>

> [@ukmoose](#):
>
> if this is coming from a database, it might be more efficient to fix what puts in there in the first place.

Completely agree with this -- somewhere there is probably a SQL select statement that is returning everything, instead of just those fields that you want to display. Narrowing down your query, and grouping the 1000's of data points into chunks of time, will _greatly_ improve the performance of the UI chart.

But, for future reference, I would use a JSONata expression to remove those properties from your raw data (assuming you cannot change the raw data that is returned). Here is one way to use a `change` node to remove those `*_qc` properties from the entire array of objects:

 ![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/2X/1/13c60d1cfd65fed2f3d70ec753c7747c4aca279a.png)

Here are a couple expressions I can think of to return just the fields you need:

1. _"sift" each object, keeping only properties that do not end with_ `_qc`

> ```auto
> payload.$sift(function($val,$key) {
> $not($key.$match(/.*_qc/))
> })
> 
> ```

1. _modify each object in-place, deleting any properties that end with_ `_qc`

> ```auto
> payload ~> | $ | {}, $keys($)~>$filter(/.*_qc/) |
> 
> ```

1. _build a new array of objects, using only selected properties from each object_

> ```auto
> payload.{
> "T_Zone_2_SOLL_Temperatur": T_Zone_2_SOLL_Temperatur,
> "T_Zone_2_IST_Temperatur": T_Zone_2_IST_Temperatur,
> "_time": _time
> }
> 
> ```

---

<div class="post-metadata">

**Author:** ![wsuess](https://avatars.discourse-cdn.com/v4/letter/w/53a042/32.png) [@wsuess](https://discourse.nodered.org/u/wsuess)\
**Post date:** [17 July 2019 10:54 UTC](https://discourse.nodered.org/t/function-node-to-filter-2-values-out/13296/14 "2019-07-17T10:54:44Z")

</div>

I found a solution see below  
Solution is a function block

 ![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/2X/a/a65af711b56d98f32260be30808221be393a6279.png)

Many thanks to everybody for help and input

---

<div class="post-metadata">

**Author:** ![bakman2](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/bakman2/32/6207_2.png) [@bakman2](https://discourse.nodered.org/u/bakman2)\
**Post date:** [17 July 2019 11:12 UTC](https://discourse.nodered.org/t/function-node-to-filter-2-values-out/13296/15 "2019-07-17T11:12:55Z")

</div>

So you only delete the first `[0]` element ?

---

<div class="post-metadata">

**Author:** ![wsuess](https://avatars.discourse-cdn.com/v4/letter/w/53a042/32.png) [@wsuess](https://discourse.nodered.org/u/wsuess)\
**Post date:** [17 July 2019 13:29 UTC](https://discourse.nodered.org/t/function-node-to-filter-2-values-out/13296/16 "2019-07-17T13:29:23Z")

</div>

You are right. It was only deleting Array index 0  
But now it is working

 ![image](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/2X/3/31e051e4605f3216fd911c9679bbd130d906158e.png)

Thanks bakman2

---

<div class="post-metadata">

**Author:** ![bakman2](https://sea2.discourse-cdn.com/flex026/user_avatar/discourse.nodered.org/bakman2/32/6207_2.png) [@bakman2](https://discourse.nodered.org/u/bakman2)\
**Post date:** [17 July 2019 13:43 UTC](https://discourse.nodered.org/t/function-node-to-filter-2-values-out/13296/17 "2019-07-17T13:43:20Z")

</div>

The solution from @shrickus is more elegant but more advanced.  
Actually I didn't even know you could do `delete msg...`
