There are a few simple tricks I use to help simplify the process of creating a recursive function.
Recursion doesn't have to be difficult. These tricks, not only help you in writing and reasoning about a recursive function, but will also help reduce the complexity of that function.
  
    
  
  
    
const rxIsoDate = /\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d.\d+([+-][0-2]\d:[0-5]\d|Z)/
const isIsoDate = value => typeof value === 'string' && rxIsoDate.test(value)
const raw = {
    a: 1,
    date: '2020-07-17T01:32:26.206Z',
    second: {
        b: 2,
        createdAt: '2020-07-17T01:32:26.206Z',
        third: {
            c: 3,
            updatedAt: '2020-07-17T01:32:26.206Z'
        }
    }
}
const toJsDate = obj => {
    if (isIsoDate(obj)) return new Date(obj)
    if (typeof obj !== 'object') return obj
const nextObj = {}
for (const [prop, value] of Object.entries(obj)) {
    nextObj[prop] = toJsDate(value)
}
return nextObj
}
toJsDate(raw)
  
As a BONUS, check out the Runkit here which also includes an example replacing the for loop with reduce https://runkit.com/joelnet/5f1344792ad936001ad53c94
Be sure to subscribe for more videos like this!

             
              
Top comments (2)
Nice tricks!
Btw what is your extension called you are using to show spaces and "tabs spacings"? :D
That's not an extension. It's a feature in vscode. Go into your settings, search for "whitespace" and change "Editor: Render Whitespace" to "all". 👍