tengo estos datos
{"channel": { "id":*******,"name":"INA229 Measurement", "description":"Test with INA229", "latitude":"0.0", "longitude":"0.0", "field1":"Voltage", "field2":"Current", "field3":"Power", "field4":"Temperature", "created_at":"2022-04-07T08:40:24Z", "updated_at":"2022-04-07T08:40:52Z", "last_entry_id":3771}, "feeds":[] }Cómo tomar solo valores para claves de campo (x) a nuevos datos. La clave del nombre campo(x) (campo1, campo2, campo3 ..... campo8) es dinámica y varía en el rango de las teclas campo1 a campo8 . No sé cuántos habrá en total, incluso al recibir datos.
Itere sobre data.channel con for/in , verifique si la clave comienza con la palabra clave y, si lo hace, agregue el valor de esa propiedad a un nuevo objeto usando esa clave.
const data = { "channel": { "id": "", "name": "INA229 Measurement", "description": "Test with INA229", "latitude": "0.0", "longitude": "0.0", "field1": "Voltage", "field2": "Current", "field3": "Power", "field4": "Temperature", "created_at": "2022-04-07T08:40:24Z", "fieldTest": "Test", "updated_at": "2022-04-07T08:40:52Z", "last_entry_id": 3771 }, "feeds": [] }; const out = {}; for (const key in data.channel) { if (key.startsWith('field')) { out[key] = data.channel[key]; } } console.log(out);Object#entries , obtenga los pares clave-valor del channelArray#reduce , itere sobre este último mientras actualiza el objeto resultanteString#match para verificar el formato de clave const data = { "channel": { "id": "", "name": "INA229 Measurement", "description": "Test with INA229", "latitude": "0.0", "longitude": "0.0", "field1": "Voltage", "field2": "Current", "field3": "Power", "field4": "Temperature", "created_at": "2022-04-07T08:40:24Z", "updated_at": "2022-04-07T08:40:52Z", "last_entry_id": 3771 }, "feeds": [] }; const res = Object.entries(data.channel).reduce((acc, [key, value]) => { if(key.match(/^field[1-8]$/)) { acc[key] = value; } return acc; }, {}); console.log(res);