Estoy leyendo las variables de entorno (clave y valor) dinámicamente y formando debajo de la matriz:
commands: [ { name: 'PRODUCT_NAME', value: 'iPhone' }, { name: 'PRODUCT_PRICE', value: '1232' }, { name: 'PRODUCT_TYPE', value: 'Electronics' }, { name: 'PRODUCT_ID', value: 'SKU29389438' }, { name: 'LOG_ENABLED', value: 'TRUE' }, ] Quiero actualizar dinámicamente el nombre de la key para estas dos propiedades PRODUCT_TYPE -> myapp.property.type.event y PRODUCT_ID -> myapp.property.product.enabled
La salida final debería verse así:
commands: [ { name: 'PRODUCT_NAME', value: 'iPhone' }, { name: 'PRODUCT_PRICE', value: '1232' }, { name: 'myapp.property.type.event', value: 'Electronics' }, { name: 'myapp.property.product.enabled', value: 'SKU29389438' }, { name: 'LOG_ENABLED', value: 'TRUE' }, ] Encuentre mi código product.js continuación:
const commands = (Object.entries(process.env).map(([key, value]) => ({ name: key, value }))) console.log("commands : ", commands);Soy nuevo en Nodejs, ¿alguien puede ayudarme? ¿Cómo puedo actualizar estas dos claves dinámicamente y formar la matriz final?
¡Tu ayuda sería muy apreciada!
1) Puede simplemente recorrer y cambiar el name como:
const obj = { commands: [ { name: "PRODUCT_NAME", value: "iPhone", }, { name: "PRODUCT_PRICE", value: "1232", }, { name: "PRODUCT_TYPE", value: "Electronics", }, { name: "PRODUCT_ID", value: "SKU29389438", }, { name: "LOG_ENABLED", value: "TRUE", }, ], }; obj.commands.forEach((o) => { if (o.name === "PRODUCT_TYPE") o.name = "myapp.property.type.event"; if (o.name === "PRODUCT_ID") o.name = "myapp.property.product.enabled"; }); console.log(obj.commands); /* This is not a part of answer. It is just to give the output full height. So IGNORE IT */ .as-console-wrapper { max-height: 100% !important; top: 0; }2) También puedes hacer como:
one-liner
obj.commands.forEach((o) => (o.name = changes[o.name] ?? o.name)); const obj = { commands: [{ name: "PRODUCT_NAME", value: "iPhone", }, { name: "PRODUCT_PRICE", value: "1232", }, { name: "PRODUCT_TYPE", value: "Electronics", }, { name: "PRODUCT_ID", value: "SKU29389438", }, { name: "LOG_ENABLED", value: "TRUE", }, ], }; const changes = { PRODUCT_TYPE: "myapp.property.type.event", PRODUCT_ID: "myapp.property.product.enabled", }; obj.commands.forEach((o) => { if (changes[o.name]) o.name = changes[o.name]; }); console.log(obj.commands); /* This is not a part of answer. It is just to give the output full height. So IGNORE IT */ .as-console-wrapper { max-height: 100% !important; top: 0; }