Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.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_Jquery - Fatal编程技术网

Javascript 在平面数组中递归搜索

Javascript 在平面数组中递归搜索,javascript,jquery,Javascript,Jquery,我有一个平面的关联数组,它将为匹配特定parentID的任何元素进行灰显。但是,我需要使用返回的结果重新运行该函数,以查看是否有任何元素的parentID与前面的结果匹配。从本质上说,我正试图得到所有的孩子和这些孩子的孩子 在下面的数组中,每个元素都有一个与其父元素匹配的父元素ID。我有一个函数,它将grep数组中包含我传递给它的父ID的任何元素,这很好 array("id" => "Test", "parent" => "#", "text" => "Title"),

我有一个平面的关联数组,它将为匹配特定parentID的任何元素进行灰显。但是,我需要使用返回的结果重新运行该函数,以查看是否有任何元素的parentID与前面的结果匹配。从本质上说,我正试图得到所有的孩子和这些孩子的孩子

在下面的数组中,每个元素都有一个与其父元素匹配的父元素ID。我有一个函数,它将grep数组中包含我传递给它的父ID的任何元素,这很好

  array("id" => "Test", "parent" => "#", "text" => "Title"),
  array("id" => "Test1", "parent" => "Test", "text" => "Title1"),
  array("id" => "Test2", "parent" => "Test", "text" => "Title2"),
  array("id" => "Test3", "parent" => "Test2", "text" => "Title3") ,
  array("id" => "Test4", "parent" => "Test1", "text" => "Title4") ,
  array("id" => "Test5", "parent" => "Test1", "text" => "Title5") 


function getChildren(id){
  var children = jQuery.grep(orig, function( n, i ) {
   return ( n.parent === id );
  });
return children;

// var children = jQuery.grep(orig, function( n, i ) {
//     return ( n.parent === id );
//   });
//   $.each(children,function(a,b){
// 
//       getChildren(children[0]['id']);
//   });
}
在函数第一次运行之后,它将返回一个包含父id的子项列表。我现在需要将所有这些子项推回到循环中,并获取它们的子项。理想情况下,一旦循环完成,我将拥有一个包含所有子级的数组。目前,函数的第一部分可以工作,但我注释掉的试图将结果传递回的区域不能工作。非常感谢您的帮助。

您可以这样做


下一个语法来自哪里,PHP?:arrayid=>Test,parent=>,text=>Title。你能添加你的Javascript输入吗?我猜你有一个对象数组,但不清楚。这正是我需要的。非常感谢。
function getChildren(id){
  let result = [];
  $.each(orig, function(i, d) {
     if (d.parent === id) {
            result.push(d);
        result.push(...getChildren(d.id));
     }
  });
  return result;
}

console.log(getChildren('Test'));