JSFiddle - React, Tailwind, and code Playground

by Oleh Aloshkin

JavaScript

var numbers = { // Our object
    a: null,
    b: {
        c: 2,
        d: 3,
        e: {
            f: 5,
            g: null
        },
        h: 6
    },
    i: {}
};

function deep(obj, newObj) { // Do same as "merge" function, but just for nested objects
    var counter = 0;
    for (var size in obj) {
        if (obj[size] == null) {
            obj[size] = "null";
        }
        if (JSON.stringify(obj[size]) == "{}") {
            obj[size] = "underfined";
        }
        if (obj[size].constructor == Object) {
            deep(obj[size], newObj);
            counter++;
        } else {
            newObj[Object.keys(obj)[counter]] = obj[size];
            counter++;
        }
    }
    return JSON.stringify(newObj);
}

function merge(obj) {
    var newObj = {},
    counter = 0;
    for (var number in obj) { // Loop out object {
        if (obj[number] == null) {
            obj[number] = "null";
        }
        if (JSON.stringify(obj[number]) == "{}") { // If object empty
            obj[number] = "underfined"; //
        }
        if (obj[number].constructor == Object) { // If property of object is object (obj[number])
            deep(obj[number], newObj);
            counter++;
        } else { // If property (obj[number]) isn't object
            newObj[Object.keys(obj)[counter]] = obj[number]; // Write to newObj property
            counter++;
        }
    }
    return JSON.stringify(newObj); // Return our newObj in JSON format
}

alert(merge(numbers));