请求您帮助用javascript构建一个函数,以从给定的输入中获得上述输出。
INPUT:对象(可能是嵌套对象(
示例:
{
"消息":"字符串",
"data1":{
"Output1": {
"leaf1": "abc",
"Leaf2": "123"
}
}
"data2":{
"Output2": {
"leaf3": "abc",
"leaf4": "123"
}
}
}
OUTPUT:字符串的数组
示例:str=["message","data1.Output1.leaf1","data 1.Output1.leaf2","数据2.Output2.leaf3","Data 2.Output2.leaf4"]
像这样的东西会在中工作
const getBranches = (data, prefix=[]) => {
if (typeof(data) !== 'object') {
return prefix.join('.')
}
return Object.entries(data).flatMap(([k, v]) => getBranches(v, [...prefix, k]))
}
const data = {
"message": "string",
"data1": {
"Output1": {
"leaf1": "abc",
"Leaf2": "123"
}
},
"data2": {
"Output2": {
"leaf3": "abc",
"leaf4": "123"
}
}
}
console.log(getBranches(data))
第二版
const data = {
"message": "string",
"data1": {
"Output1": {
"leaf1": [{
"b": {
"c": "12"
}
}]
}
},
"data2": {
"Output2": {
"leaf3": "abc",
"leaf4": "123"
}
}
}
const getBranches = (data, prefix = []) => {
if (typeof(data) !== 'object') {
return prefix.join('.')
}
return Object.entries(data).flatMap(([k, v]) => Array.isArray(data) ? getBranches(v, [...prefix]) : getBranches(v, [...prefix, k]))
}
console.log(getBranches(data))