Tengo esto:
let obj= { 'Cow' : 'Moo', 'Cat' : 'Meow', 'Dog' : 'Bark' }; Quiero console.log(JSON.stringify(obj_without_Cow)) , por lo que esto se registraría:
{ 'Cat' : 'Meow', 'Dog' : 'Bark' } Podría delete Cow, desestructurar con rest o usar varios otros enfoques, pero me preguntaba si hay una manera de modificar solo lo que se pasa a console.log, como se muestra arriba. Es decir, sin código adicional fuera de console.log() .
De manera análoga, si estuviera registrando un str = 'xxxyyy' , podría eliminar todas las 'x': console.log(str.replaceAll('x','')) , es intuitivo probar console.log(delete obj.Cow) que, sin embargo, devuelve verdadero o falso, no el objeto modificado.
sin código adicional fuera de
console.log().
Un IIFE hace maravillas para las frases ingeniosas:
console.log( (({Cow, ...withoutCow}) => JSON.stringify(withoutCow))(obj) ); Alternativamente, puede usar el parámetro de JSON.stringify para replacer :
console.log(JSON.stringify(obj, (key, val) => key == 'Cow' ? undefined : val));Parece que necesita un interceptor console.log :
console.log = (() => { const logger = console.log; return function (...args) { if (typeof args[0] === 'object') args[0] = Object.fromEntries(Object.entries(args[0]).filter(([key]) => !key.includes('Cow'))); else if (typeof args[0] === 'string') args[0] = args[0].replaceAll('x',''); return logger.apply(this, args); }; })(); let obj = { 'Cow' : 'Moo', 'Cat' : 'Meow', 'Dog' : 'Bark' }; let str = 'xxxyyy'; console.log(obj); console.log(str);Si está utilizando Underscore.js o Lodash , hay una función 'omitir' que lo hará. https://lodash.com/docs#omit
const thisIsObject= { 'Cow' : 'Moo', 'Cat' : 'Meow', 'Dog' : 'Bark' }; console.log(_.omit(thisIsObject,'Cow')); => {'Cat' : 'Meow', 'Dog' : 'Bark'} O puede crear su propia función de omit desde JavaScript puro.
const omit = (inputObject, removedKeys) => Object.keys(inputObject) .filter((key) => !removedKeys.includes(key)) .reduce((obj, key) => { obj[key] = inputObject[key]; return obj; }, {}); console.log(omit(thisIsObject,'Cow')); => {'Cat' : 'Meow', 'Dog' : 'Bark'}