Básicamente, estoy seleccionando parte del objeto (valores) y quiero inyectar CreateValue a este objeto, pero con ciertas condiciones. Quiero verificar si el campo comienza con 'FLD_STR_' y si este campo contiene un objeto. Tengo varios campos 'fld_str_', por lo que solo quiero seleccionar el que contiene un objeto y no una cadena. No creo que necesite hacer un bucle en este caso. Solo agrega una condición
const values = { ID: 748817, CODE: "OFFLINE-003", FLD_STR_101: { field: "FLD_STR_101", name: "doc.pdf", value: 'base64', type: "application/pdf" }, FLD_STR_102: "coucou", Table: 109414, OWNER: "MJACQUIER", } const ele = ()=>{ if (values.startsWith('FLD_STR_') && typeof values.startsWith('FLD_STR_') === 'object') { values.createFileValue = values.startsWith('FLD_STR_'); } } console.log(ele())esta es la salida:
const values = { ID: 748817, CODE: "OFFLINE-003", FLD_STR_101: { field: "FLD_STR_101", name: "doc.pdf", value: 'base64', type: "application/pdf" }, FLD_STR_102: "coucou", Table: 109414, OWNER: "MJACQUIER", "createFileValue": { field: "FLD_STR_101", name: "doc.pdf", value: 'base64', type: "application/pdf" } }¿Qué hace values.startsWith('FLD_STR_') ? los valores son un objeto, no una cadena, intente esto
const keys = Object.keys(values); keys.forEach(key => { if(key.startsWith('FLD_STR_') && typeof values[key] === 'object'){ values.createFileValue = values[key]; } })