# JS make array from object values with "key" filtering

**URL:** <https://discourse.nodered.org/t/js-make-array-from-object-values-with-key-filtering/43365>\
**Category:** General\
**Created:** [29 March 2021 13:36 UTC](https://discourse.nodered.org/t/js-make-array-from-object-values-with-key-filtering/43365 "2021-03-29T13:36:04Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![pautorras](https://avatars.discourse-cdn.com/v4/letter/p/c57346/32.png) [@pautorras](https://discourse.nodered.org/u/pautorras)\
**Post date:** [29 March 2021 13:36 UTC](https://discourse.nodered.org/t/js-make-array-from-object-values-with-key-filtering/43365/1 "2021-03-29T13:36:04Z")

</div>

Hi all,

I'm looking to make a array of values from object.  
I would like to filter the object keys, to make array only with the desired objects.

I have tested with this code, but something is wrong:

```auto
var GlObject=global.get("Objecte")||0;
var uploaditems=[];

for (const property in GlObject) {
    if (Object.keys(GlObject).includes("VOLTATGEL1")){
        //uploaditems.push(GlObject.value); 
        uploaditems.push(property); }
}

global.set("uploaditems",uploaditems);
return {payload:uploaditems};

```

This is how global object is:  
 ![Global Object](https://us1.discourse-cdn.com/flex026/uploads/nodered/original/3X/b/a/bad46d990f4f5c4f34dac0badebc3d1426b1a3c7.jpeg)

Thank you all!

---

<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:** [29 March 2021 14:29 UTC](https://discourse.nodered.org/t/js-make-array-from-object-values-with-key-filtering/43365/2 "2021-03-29T14:29:58Z")

</div>

```auto
uploaditems.push(property);

```

should be

```auto
uploaditems.push({[property]: GlObject[property]});

```

if you wish to return the object

---

<div class="post-metadata">

**Author:** ![UnborN](https://avatars.discourse-cdn.com/v4/letter/u/4491bb/32.png) [@UnborN](https://discourse.nodered.org/u/UnborN)\
**Post date:** [29 March 2021 14:32 UTC](https://discourse.nodered.org/t/js-make-array-from-object-values-with-key-filtering/43365/3 "2021-03-29T14:32:06Z")

</div>

> [@pautorras](#):
>
> to make array only with the desired objects.

Hi .. What exactly you want to be returned ? The matching key **and** value pair ?  
For example ` VOLTATGEL1: 400` ?

```auto
GlObject = {
     VOLTATGEL1: 400, 
     INTENSITATL1: 2, 
     POTENCIAL1: 12, 
     POTREACL1: 1,
     FACTORPOTL1: 0.95,
     VOLTATGEL2: 405, 
     INTENSITATL2: 22, 
     POTENCIAL2: 12, 
     POTREACL2: 3, 
     FACTORPOTL2: 0.96, 
     VOLTATGEL3: 399, 
     INTENSITATL3: 17, 
     POTENCIAL3: 6, 
     POTREACL3: 2, 
     FACTORPOTL3: 0.89, 
     POTENCIAACTIVAIII: 25, 
     POTENCIAINDUCTIVAIII: 20, 
     POTENCIACAPACITIVAIII: 5, 
     COSPHI: 0.85 
}

let result = []

Object.entries(GlObject).forEach( ([key,value]) => {
    if ( key.match(/VOLTATGEL1/) )
    {
        result.push({[key]: value }) 
    }
})
    
msg.payload = result
   
return msg;

```

Test flow :

```auto
[{"id":"de91c851.6e103","type":"inject","z":"aa111c28.0194a","name":"trigger","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":280,"y":200,"wires":[["48ada723.4577a"]]},{"id":"48ada723.4577a","type":"function","z":"aa111c28.0194a","name":"","func":"GlObject = {\n VOLTATGEL1: 400, \n INTENSITATL1: 2, \n POTENCIAL1: 12, \n POTREACL1: 1,\n FACTORPOTL1: 0.95,\n VOLTATGEL2: 405, \n INTENSITATL2: 22, \n POTENCIAL2: 12, \n POTREACL2: 3, \n FACTORPOTL2: 0.96, \n VOLTATGEL3: 399, \n INTENSITATL3: 17, \n POTENCIAL3: 6, \n POTREACL3: 2, \n FACTORPOTL3: 0.89, \n POTENCIAACTIVAIII: 25, \n POTENCIAINDUCTIVAIII: 20, \n POTENCIACAPACITIVAIII: 5, \n COSPHI: 0.85 \n}\n\nlet result = []\n\nObject.entries(GlObject).forEach( ([key,value]) => {\n if ( key.match(/VOLTATGEL1/) )\n {\n result.push({[key]: value }) \n }\n})\n \nmsg.payload = result\n \nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":460,"y":200,"wires":[["b3e46e18.7e1578"]]},{"id":"b3e46e18.7e1578","type":"debug","z":"aa111c28.0194a","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":650,"y":200,"wires":[]}]

```

---

<div class="post-metadata">

**Author:** ![pautorras](https://avatars.discourse-cdn.com/v4/letter/p/c57346/32.png) [@pautorras](https://discourse.nodered.org/u/pautorras)\
**Post date:** [29 March 2021 14:57 UTC](https://discourse.nodered.org/t/js-make-array-from-object-values-with-key-filtering/43365/4 "2021-03-29T14:57:34Z")

</div>

Hi @UnborN thanks for your help.  
I answer your questions.

The main goal is to filter object keys that contain for example:  
VOLT or _ENSIT_ ... I don't know if it is possible.

Sample:  
I want to filter in object keys the word containing (_ENSIT_). How should be the output?

msg2.payload= [2,22,17]  
msg2.topic=[INTENSITATL1,INTENSITATL2,INTENSITATL3]

Thanks

---

<div class="post-metadata">

**Author:** ![UnborN](https://avatars.discourse-cdn.com/v4/letter/u/4491bb/32.png) [@UnborN](https://discourse.nodered.org/u/UnborN)\
**Post date:** [29 March 2021 15:13 UTC](https://discourse.nodered.org/t/js-make-array-from-object-values-with-key-filtering/43365/5 "2021-03-29T15:13:13Z")

</div>

You want the Topic also to be an array ? .. usually in Node-red the msg.topic is reserved to be used as a small description of what the msg is about. It would be better if you returned an array of objects but if you need it this way.

```auto
GlObject = {
    VOLTATGEL1: 400, 
    INTENSITATL1: 2, 
    POTENCIAL1: 12, 
    POTREACL1: 1,
    FACTORPOTL1: 0.95,
    VOLTATGEL2: 405, 
    INTENSITATL2: 22, 
    POTENCIAL2: 12, 
    POTREACL2: 3, 
    FACTORPOTL2: 0.96, 
    VOLTATGEL3: 399, 
    INTENSITATL3: 17, 
    POTENCIAL3: 6, 
    POTREACL3: 2, 
    FACTORPOTL3: 0.89, 
    POTENCIAACTIVAIII: 25, 
    POTENCIAINDUCTIVAIII: 20, 
    POTENCIACAPACITIVAIII: 5, 
    COSPHI: 0.85 
}

let payload = []
let topic = []

Object.entries(GlObject).forEach( ([key,value]) => {
   if ( key.match(/ENSIT/) ) // regex to match
   {
       payload.push(value) 
       topic.push(key) 
   }
})
   
msg.payload = payload
msg.topic = topic

return msg;

```

---

<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:** [29 March 2021 15:19 UTC](https://discourse.nodered.org/t/js-make-array-from-object-values-with-key-filtering/43365/6 "2021-03-29T15:19:24Z")

</div>

Or

```auto
let GlObject = {
     VOLTATGEL1: 400, 
     INTENSITATL1: 2, 
     POTENCIAL1: 12, 
     POTREACL1: 1,
     FACTORPOTL1: 0.95,
     VOLTATGEL2: 405, 
     INTENSITATL2: 22, 
     POTENCIAL2: 12, 
     POTREACL2: 3, 
     FACTORPOTL2: 0.96, 
     VOLTATGEL3: 399, 
     INTENSITATL3: 17, 
     POTENCIAL3: 6, 
     POTREACL3: 2, 
     FACTORPOTL3: 0.89, 
     POTENCIAACTIVAIII: 25, 
     POTENCIAINDUCTIVAIII: 20, 
     POTENCIACAPACITIVAIII: 5, 
     COSPHI: 0.85 
},
key = "ENSIT";
msg.payload = [];
msg.topic =[];
for(const K in GlObject){ // loop through keys
   if(K.includes(key)){
       msg.payload.push(GlObject[K]);
       msg.topic.push(K);
   }
}
return msg;

```

---

<div class="post-metadata">

**Author:** ![pautorras](https://avatars.discourse-cdn.com/v4/letter/p/c57346/32.png) [@pautorras](https://discourse.nodered.org/u/pautorras)\
**Post date:** [29 March 2021 16:14 UTC](https://discourse.nodered.org/t/js-make-array-from-object-values-with-key-filtering/43365/7 "2021-03-29T16:14:15Z")

</div>

Thank you all!! SOLVED

---

<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:** [12 April 2021 16:14 UTC](https://discourse.nodered.org/t/js-make-array-from-object-values-with-key-filtering/43365/8 "2021-04-12T16:14:32Z")

</div>

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