I have multi level json data like
const data = {
level11: "l11",
level12: { level21: "l21", level22: { level31: "l31", level32: "l32" } },
level13: [{ level131: "a" }, { level132: "b" }]
};
I can easily get value by using property like data.level11 and the output is "l11" etc. but I have key name like "level11" or "level12.level22.level31" etc
for first level I can easily access value by using data["level11"] but n level value is not comming.
My solution is as following.
generateData = (data, key) => {
if (!key.includes("."))
return data[key];
var p = key.split(".")[0];
var ndata = data[p];
if(!ndata) return;
var newkey = key
.split(".")
.filter((o, i) => i !== 0)
.join(".");
return this.generateData(ndata, newkey);
};
but it is not working on array values or object values
Is there any other way to get values by using key name.
export default function App() {
const data = {
level11: "l11",
level12: { level21: "l21", level22: { level31: "l31", level32: "l32" } },
level13: [{ level131: "a" }, { level132: "b" }]
};
generateData = (data, key) => {
if (!key.includes("."))
return data[key];
var p = key.split(".")[0];
var ndata = data[p];
var newkey = key
.split(".")
.filter((o, i) => i !== 0)
.join(".");
return this.generateData(ndata, newkey);
};
return (
<div className="App">
<h1>Hello CodeSandbox</h1>
<span>{this.generateData(data, "level12.level22.level31")}</span>
</div>
);
}
but it is not working on array values or object values