优化JavaScript

优化JavaScript,javascript,arrays,angular,performance,Javascript,Arrays,Angular,Performance,有人能帮我找到优化以下代码的最佳方法吗?因为当我搜索上千条记录时,这需要很长时间 var arr =[ { children:[ { children:[ { children:[ { name:'XYZZZZZ' }

有人能帮我找到优化以下代码的最佳方法吗?因为当我搜索上千条记录时,这需要很长时间

var arr =[
   {
      children:[
         {
            children:[
               {
                  children:[
                     {
                        name:'XYZZZZZ'
                     }
                  ]
               }
            ]
         }
      ]
   }
];

        let list = [];

        //Calculate column list
        arr.forEach((obj0) => {
            if (obj0.hasOwnProperty('children')) {
                if (obj0.children.length > 0) {
                    let objchid1 = obj0.children;
                    objchid1.forEach((obj1) => {
                        if (obj1.hasOwnProperty('children')) {
                            if (obj1.children.length > 0) {
                                let objchid2 = obj1.children;
                                objchid2.forEach((obj2) => {
                                    if (obj2.hasOwnProperty('children')) {
                                        if (obj2.children.length > 0) {
                                            let objchid3 = obj2.children;
                                         objchid3.forEach((obj3) => {
                                            if (obj3.name !== 'james') {
                                    console.log('IN THREEE', obj3.name);
                                                list.push(obj3.name);
                                                }
                                            });

                                        }
                                    }
                                });
                            }
                        }
                    });
                }
            }
        });
我已经尝试了很多搜索,但没有运气,提前谢谢你

  • 优化您的数据结构。除非确实需要,否则不要使用嵌套数组。NoSQL在WebDev中非常流行,因为读操作的发生率是写操作的10万倍,考虑到硬件的廉价性,节省带宽(对您和用户而言)比在数据库中保存重复数据更有价值
  • 您可以将最深数组的元素保存为对象键(在您的示例中使用嵌套的.name属性),并将数组中各个位置的索引保存为对象值。通过这种方式,您可以在嵌套数组上只迭代一次(用于构建
    myElementsToIndexObject
  • 优化您的数据结构。除非确实需要,否则不要使用嵌套数组。NoSQL在WebDev中非常流行,因为读操作的发生率是写操作的10万倍,考虑到硬件的廉价性,节省带宽(对您和用户而言)比在数据库中保存重复数据更有价值
  • 您可以将最深数组的元素保存为对象键(在您的示例中使用嵌套的.name属性),并将数组中各个位置的索引保存为对象值。通过这种方式,您可以在嵌套数组上只迭代一次(用于构建
    myElementsToIndexObject

  • 如果数据来自JSON字符串,则可以在解析过程中进行搜索:

    var list=[],json='[{“child”:[{“child”:[{“child”:[{“name”:“xyzzzz”}]}]'
    var arr=JSON.parse(JSON,(key,val)=>(key=='name'&&list.push(val,val))
    console.log(列表)
    
    console.log(arr)
    如果数据来自JSON字符串,则可以在解析过程中进行搜索:

    var list=[],json='[{“child”:[{“child”:[{“child”:[{“name”:“xyzzzz”}]}]'
    var arr=JSON.parse(JSON,(key,val)=>(key=='name'&&list.push(val,val))
    console.log(列表)
    
    console.log(arr)
    我建议您考虑创建递归函数递归函数看起来会更干净,但所有处理步骤都将保持不变,如果您多次运行此函数(如搜索工具),我怀疑性能会有多大变化应考虑存储results@charlietfl即使这只会让它看起来更好,这仍然是一种优化。但是递归的好处是,您只检查是否有
    子项
    ,而不管它是否为24深……与forEach循环的24个选项卡列相比,递归将在一行中检查24深。删除不必要的
    if(obj.children.length>0){
    condition我建议您考虑创建一个递归函数递归函数看起来会干净很多,但所有的处理步骤都将是一样的,如果您多次运行此函数(例如搜索工具),我怀疑性能会有多大变化应考虑存储results@charlietfl即使这只会让它看起来更好,这仍然是一种优化。但递归的好处是,你只检查是否有
    子项
    ,而不管它是否是24深的……递归将在一行中检查24深,而不是forEach loo的24个选项卡列ps.如果(obj.children.length>0){条件,则删除不必要的
    if(obj.children.length>0){