JS make array from object values with "key" filtering

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.

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;
1 Like