javascript - 循环直到在 Javascript 中找到一个空数组

标签 javascript json typescript vue.js foreach

我正在尝试找到一种解决方案来进行循环(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/

相关文章:

javascript - 根据特定DIV在css中的位置定位其他DIV

变量定义中类型的 typescript 约定

javascript - 如何使用变量作为 json 属性?

javascript - 为对象的所有属性定义模式

typescript - 类验证器使用 createQueryBuilder 意外触发验证

javascript - 多边形数组在 Google map API 中不起作用

javascript - 如何为 XmlHttpRequest 保留多组 cookie

javascript - 构造函数。无法覆盖对全局变量的引用

javascript - 生成与 Leaflet 一起使用的 GeoJSON 网格

java - 如何为 java.time.LocalDateTime 自定义全局 Jackson 反序列化器