I have this:
let obj= { 'Cow' : 'Moo', 'Cat' : 'Meow', 'Dog' : 'Bark' };
I want to console.log(JSON.stringify(obj_without_Cow))
, so this would be logged:
{ 'Cat' : 'Meow', 'Dog' : 'Bark' }
I could delete
Cow, destructure with rest, or use several other approaches, but I was wondering if there is a way to only modify what is passed to console.log, as shown above. That is, without extra code outside of console.log()
.
Analogically, if I was logging a str = 'xxxyyy'
, I could have all ‘x’s removed: console.log(str.replaceAll('x',''))
, it is intuitive to try console.log(delete obj.Cow)
which, however, return true or false, not the modified object.
Advertisement
Answer
without extra code outside of
console.log()
.
An IIFE does wonders for one-liners:
console.log( (({Cow, ...withoutCow}) => JSON.stringify(withoutCow))(obj) );
Alternatively, you can use the replacer
parameter to JSON.stringify
:
console.log(JSON.stringify(obj, (key, val) => key == 'Cow' ? undefined : val));