JSFiddle - React, Tailwind, and code Playground

by Kumar Sidharth

JavaScript

var input = {
    "d": {
       "a": 2,
       "d": 34,
       "df": {
           "g": 12,
           "f": 12,
           "ab": [12, 23]
       }
    },
    "c":32
}

var output = {
    "d.a": 2,
    "d.d": 34,
    "d.df.g": 12,
    "d.df.f": 12,
    "d.df.ab.0":12,
    "d.df.ab.1":23,
    "c":32
};


function flatten(obj, output = {}, parentObjectKey = '') {
	const keys = Object.keys(obj);
  for(let i=0; i<keys.length; i++) {
  	if(!isNaN(obj[i])) {
    	output[keys[i]] = obj[i];
    } else {
    	output[keys[i] + '.' + parentObjectKey] = flatten(obj[i], output, keys[i]);
    }
  }
  return output;
}

console.log(flatten(input));