Javascript 以角度展平嵌套数组以进行类似于linq的查询

Javascript 以角度展平嵌套数组以进行类似于linq的查询,javascript,arrays,angular,typescript,Javascript,Arrays,Angular,Typescript,我正在使用cdk tree构建一个角度树组件,并希望查询单个选定节点,但是,由于数组是嵌套的,因此我无法轻松使用.filter执行此操作 我拥有的单一对象结构如下: export class MyTreeNode { name: string; id: string; selected?: boolean; children?: MyTreeNode[]; } 如果我使用.filter之类的工具进行查询,我有一个数组来构建树,而不是只返回顶层,但是我也希望能够查

我正在使用cdk tree构建一个角度树组件,并希望查询单个选定节点,但是,由于数组是嵌套的,因此我无法轻松使用.filter执行此操作

我拥有的单一对象结构如下:

export class MyTreeNode {
    name: string;
    id: string;
    selected?: boolean;
    children?: MyTreeNode[];
}
如果我使用.filter之类的工具进行查询,我有一个数组来构建树,而不是只返回顶层,但是我也希望能够查询子节点

我的想法是,如果我将可以使用的数组展平。使用过滤器查询所有数据,那么这是最明智的方法吗


干杯

假设您使用的是类似于树的结构,我将使用一个对树进行操作的函数,例如递归或迭代

function searchNodeById(tree: MyTreeNode, id: string): MyTreeNode {
  const stack: MyTreeNode[] = [];
  let node: MyTreeNode;
  stack.push(tree);
  while (stack.length > 0) {
    node = stack.pop();
    if (node.id === id) return node;
    if (node.children) stack.push(...node.children);
  }
}


您是否有一个
linq
的示例?请提供一些输入、预期输出的示例数据,以及您希望如何筛选以创建一个完整的应用程序的明确标准。非常感谢!纯小溶液