Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在嵌套树中查找元素-JavaScript_Javascript_Dom_Search_Tree_Breadth First Search - Fatal编程技术网

在嵌套树中查找元素-JavaScript

在嵌套树中查找元素-JavaScript,javascript,dom,search,tree,breadth-first-search,Javascript,Dom,Search,Tree,Breadth First Search,在编写函数以搜索示例树中的元素时需要帮助 var sampletree = [ "a", "b", "c", [ "d", "e", [ "f", "h", "i", [ "z", "x" ] ] ], [ "y", "q", "t", [ "m", "n", [ "

在编写函数以搜索示例树中的元素时需要帮助

var sampletree = [
  "a",
  "b",
  "c",
  [
    "d",
    "e",
    [
      "f",
      "h",
      "i",
      [
        "z",
        "x"
      ]
    ]
  ],
  [
    "y",
    "q",
    "t",
    [
      "m",
      "n",
      [
        "o",
        "p"
      ],
      [
        "r",
        "s",
        [
          "u",
          "v"
        ]
      ]
    ]
  ],
  "g"
]
希望通过只使用javascript而不使用框架/库的广度优先搜索来搜索树中的内部元素,如o、p、u、v,从而返回true/false


我使用for循环运行,然后运行.indexOf,但无法获得它。

您可以使用此函数:

函数findNodeBFS(树,节点){
var queue=tree.slice();
对于(变量i=0;iconsole.log(findNodeBFS(sampletree,“j”);//false
您可以使用此功能:

函数findNodeBFS(树,节点){
var queue=tree.slice();
对于(变量i=0;iconsole.log(findNodeBFS(sampletree,“j”);//false
那么,如果搜索“u”,您希望返回值是什么?为什么[dom]被标记在您的问题上?您正在尝试手动遍历DOM吗?不要这样做。那么,如果搜索“u”,您想要什么作为返回值?为什么在您的问题上标记[dom]?您正在尝试手动遍历DOM吗?不要那样做。啊,是的,谢谢你突出显示@4castle。把它变成了BFS版本。你能给我解释一下代码中的“if(Array.isArray(queue[i])queue=queue.concat(queue[i]);”吗@trincotI添加了一些解释。啊,是的,谢谢你突出显示@4castle。你能解释一下“if(Array.isArray(queue[i])queue=queue.concat(queue[i]);”的代码吗@trincotI为我添加了一些解释。