我正在尝试找到一种解决方案来进行循环(Javascript),直到对象数组为空。这是我想使用的对象:
"chain": {
"evolves_to": [{
"evolves_to": [{
"evolves_to": [],
"species": {
"name": "nidoqueen"
}
}],
"species": {
"name": "nidorina"
}
}],
"species": {
"name": "nidoran-f"
}
}
我想循环直到找到变量evolves_to
为空。并在每个循环中使用species.name来列出进化,在我的例子中:
nidoran-f -> nidorina -> nidoqueen
我还找不到好的方法。有点失落。感谢您的帮助;)
最佳答案
您可以使用递归函数:
const chain = {
"evolves_to": [{
"evolves_to": [{
"evolves_to": [],
"species": {
"name": "nidoqueen"
}
}],
"species": {
"name": "nidorina"
}
}],
"species": {
"name": "nidoran-f"
}
}
, traverse = obj => {
if(!obj.evolves_to.length) {
console.log(obj.species.name)
return
} else {
console.log(obj.species.name, "=>")
traverse(obj.evolves_to[0])
}
}
traverse(chain)
或者收集数组中的值:
const chain = {
"evolves_to": [{
"evolves_to": [{
"evolves_to": [],
"species": {
"name": "nidoqueen"
}
}],
"species": {
"name": "nidorina"
}
}],
"species": {
"name": "nidoran-f"
}
}
, arr = []
, traverse = obj => {
if(!obj.evolves_to.length) {
arr.push(obj.species.name)
return
} else {
arr.push(obj.species.name)
traverse(obj.evolves_to[0])
}
}
traverse(chain)
console.log(arr.join(" -> "))
关于javascript - 循环直到在 Javascript 中找到一个空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71910247/