some one gave me this question as a practice problem. I have to use "_.reduce" on the following object to print out the text "a good practice". Quite frankly I am struggling even to visualize this in my head. Any help would be appreciated.
var test = {a:'a',b:{a:'good',c:{c:'practice'}}}
Thank You!
Because you don't know how nested the object is, you'll need to use recursion to accomplish the task at hand. You can't use .reduce on the object itself, so you'll have to use Object.keys to get an array of properties from the object. Then you can .reduce the returned array.
var test = {a:'a',b:{a:'good',c:{c:'practice'}}};
var deeperTest = {a:'a',b:{a:'deeper',b:{a:'test',b:{a:'than',b:{a:'before'}}}}};
function reducer(obj) {
if (typeof obj != 'object') return ''; //we only want to reduce 'objects'
return Object.keys(obj).reduce(function(prev, curr) {
if (typeof obj[curr] != 'string')
prev += ' ' + reducer(obj[curr]); //probably an object - let's dig in
else
prev += ' ' + obj[curr]; //just a string - append to accumulator
return prev;
}, "");
}
console.log(reducer(test));
console.log(reducer(deeperTest));
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With