Оптимизировать JavaScript - PullRequest
       1

Оптимизировать JavaScript

0 голосов
/ 28 апреля 2018

Может кто-нибудь помочь мне найти лучший способ оптимизации приведенного ниже кода, так как это занимает много времени, когда я ищу тысячи записей

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);
                                                }
                                            });

                                        }
                                    }
                                });
                            }
                        }
                    });
                }
            }
        });

Я много раз пытался искать, но безуспешно. Заранее спасибо. !!!

Ответы [ 2 ]

0 голосов
/ 12 мая 2019

Если данные взяты из строки JSON, поиск может быть выполнен во время синтаксического анализа:

var list = [], json = '[{"child":[{"child":[{"child":[{"name":"XYZZZZZ"}]}]}]}]'

var arr = JSON.parse(json, (key, val) => (key === 'name' && list.push(val), val))

console.log(list)
console.log(arr)
0 голосов
/ 28 апреля 2018
  1. Оптимизируйте свою структуру данных. Не используйте вложенные массивы, если вам это действительно не нужно. NoSQL настолько популярен, когда речь идет о WebDev, потому что чтение происходит в 100 000 раз чаще, чем запись, и экономия на пропускной способности (для вас и пользователя) стоит больше, чем экономия на дублирующихся данных в базе данных, учитывая, насколько дешевое оборудование
  2. Вы можете сохранить элементы самого глубокого массива в качестве ключей объекта (с вложенным атрибутом .name в вашем случае) и индекс соответствующей позиции в массиве в качестве значения объекта. Таким образом, вы можете выполнить myArray[myElementsToIndexObject['elementIamLookingFor']] итерацию только один раз по вложенному массиву (для построения myElementsToIndexObject)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...