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