【发布时间】:2019-09-12 09:24:52
【问题描述】:
我有一个树对象,它是一棵不规则的树,每次我运行我的代码时,孩子的名字和键值都会改变。例如:
{
addressRouter: 192.168.0.1,
addresses:
{
address1: 'A',
},
{
address2: 'B',
},
{
ports: [
{
portA: 'C',
portB: null
},
}
route: 'D',
}
所以名称:'addressRouter'、'addresses'、'address1'等及其键是不可预测的,但我需要将树对象转换为具有以下格式的数组:
addressRouter
addresses/address1
addresses/address2
addresses/ports/portA
addresses/ports/portB
route
然后把他们的钥匙放在他们旁边。
我有这个函数来构造树,这是正确的:
const iterate = (obj, obj2) => {
Object.keys(obj).forEach(key => {
obj2[key] = obj[key];
if (typeof obj[key] === 'object') {
iterate(obj[key], obj2)
}
})
}
但调试后,我意识到它并没有得到所有的分支。
【问题讨论】:
-
您能否向我们展示实际的示例数组,您希望它们最终以 JSON 表示法如何?我没有从你的“格式”描述中得到你想要的输出,是否应该有嵌套数组忽略键名或其他东西?
-
@JeyDWork 我想将第一个灰色框中显示的对象转换为第二个灰色框中显示的字符串。我刚刚意识到我的迭代函数并没有涵盖所有分支,所以我认为我需要纠正它
-
所以数组应该是
["addressRouter", "addresses/address1", "addresses/address2", "addresses/ports/portA", "addresses/ports/portB", "route"]完全一样,忽略原始对象中的值,键以/作为分隔符连接在一起? -
@JeyDWork 是的!确切地! :)
-
@JeyDWork 只是找到一个可能的解决方案并将其写为答案