Given a nested JavaScript object, the task is to flatten the object and pull out all the values to a single depth. If the values are already at single depth then it returns the result unaltered.
typeof() method: The typeof() method is used in the script to check the type of JavaScript variable.
Syntax:
typeof(variable)
Parameters: This method accept one parameter as mentioned above and described below:
- Variable: The input variable.
Return Value: This method returns a string which contains the type of the passed variable.
Approach:
- We make a function called flatten object which takes input of an object and returns an object.
- Loop through the object and check the type of the current property:
- If it is of type Object and it is not an Array , recursively call the function again.
- Otherwise, store the value in the result.
- Return the object.
Example:
Javascript
// Declare an object let ob = { Â Â Â Â Company: "neveropen" , Â Â Â Â Address: "Noida" , Â Â Â Â contact: +91-999999999, Â Â Â Â mentor: { Â Â Â Â Â Â Â Â HTML: "GFG" , Â Â Â Â Â Â Â Â CSS: "GFG" , Â Â Â Â Â Â Â Â JavaScript: "GFG" Â Â Â Â } }; Â
// Declare a flatten function that takes // object as parameter and returns the // flatten object const flattenObj = (ob) => { Â
    // The object which contains the     // final result     let result = {}; Â
    // loop through the object "ob"     for (const i in ob) { Â
        // We check the type of the i using         // typeof() function and recursively         // call the function again         if (( typeof ob[i]) === 'object' && !Array.isArray(ob[i])) {             const temp = flattenObj(ob[i]);             for (const j in temp) { Â
                // Store temp in result                 result[i + '.' + j] = temp[j];             }         } Â
        // Else store ob[i] in result directly         else {             result[i] = ob[i];         }     }     return result; }; Â
console.log(flattenObj(ob)); |
Output:
{ Company: 'neveropen', Address: 'Noida', contact: -999999908, 'mentor.HTML': 'GFG', 'mentor.CSS': 'GFG', 'mentor.JavaScript': 'GFG' }