一个函数,用于获取javascript中字符串数组中对象的所有叶节点属性



请求您帮助用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))

最新更新