发布于 2022-04-16 15:25:20
function* levels({ name, manages = [] }, level = 1) {
yield [name, level]
for (const m of manages)
yield *levels(m, level + 1)
}
const company = {"name":"George", "manages":[{"name":"James", "manages":[{"name":"Jill"},{"name":"Jenny"}]}, {"name":"Jamila", "manages":[{"name":"Jewel"}, {"name":"Jasmine"}, {"name":"Jeremey"}]}]}
for (const [name, level] of levels(company))
console.log(`${name} is at level ${level}`)
George is at level 1
James is at level 2
Jill is at level 3
Jenny is at level 3
Jamila is at level 2
Jewel is at level 3
Jasmine is at level 3
Jeremey is at level 3对于python,答案几乎是相同的。
from json import loads
def levels(node, level = 1):
yield (node['name'], level)
try:
for m in node['manages']:
yield from levels(m, level + 1)
except KeyError:
return
company = loads('{"name":"George", "manages":[{"name":"James", "manages":[{"name":"Jill"},{"name":"Jenny"}]}, {"name":"Jamila", "manages":[{"name":"Jewel"}, {"name":"Jasmine"}, {"name":"Jeremey"}]}]}')
for (name, level) in levels(company):
print(f"{name} is at level {level}")George is at level 1
James is at level 2
Jill is at level 3
Jenny is at level 3
Jamila is at level 2
Jewel is at level 3
Jasmine is at level 3
Jeremey is at level 3https://stackoverflow.com/questions/71895106
复制相似问题