Jump to content
  1. OS

    1. 75
      posts
    2. 14
      posts
  2. Coding

    1. 27
      posts
    2. 32
      posts
    3. 25
      posts
    4. 4
      posts
    5. 1
      post
    6. 7
      posts
    7. 12
      posts
  3. Underground

    1. 16
      posts
    2. 1
      post
      • No posts here yet
    3. 30
      posts
    4. TV

      About television. Satellite and terrestrial.

      • No posts here yet
      • No posts here yet
    5. 12
      posts
  4. Games

    1. 5
      posts
  5. Other

    1. 58
      posts
    2. 8
      posts
    3. 49
      posts
    4. SEO

      2
      posts
    5. 4
      posts
    6. 9
      posts
    7. 1
      post
      • No posts here yet
    8. 5
      posts
    9. Talker

      Talking about everything, not falling into other topics.

      114
      posts
  6. k0d.biz

      • No posts here yet
      • No posts here yet
    1. 44
      posts
      • No posts here yet
  • Who's Online   0 Members, 0 Anonymous, 2 Guests (See full list)

    There are no registered users currently online

  • Posts

    • Создание древа зная id и idParent на js. Имея массив обьектов: let data = [     {//Не вложен никуда, корневой елемент.         id: 1,         name: "testK0d_#1",         idParent: 0     },     { //вложен в обьект с id = 1, вышестоящий.         id: 2,         name: "testK0d_#2",         idParent: 1     },    ...     {//вложен в обьект с id = N         id: M, //M, так как не N, id c N-другой обьект.         name: "testK0d_#N",         idParent: idN     } ]; понадобится тебе: "dependencies": { "lodash": "^4.17.20", }, let self = this; let arAll = {}; //Все значения let arWhisChildren = {}; //c родителями //проставляем все данные for (let key in self.data){ let item = self.data[key]; arAll[item.id.Int32] = item; let childrens = lodash.filter(self.data, function (o) { if(o.id_parent_sprRegulationsGroups.Int32 === item.id.Int32){ return true; } }); let arChildrens = {}; for(let k in childrens){ arChildrens[childrens[k].id.Int32] = {}; } arWhisChildren[item.id.Int32] = arChildrens; } console.log(arWhisChildren); //################# !!!WARNING!!!################## //Если нужна чисто собранная структура обьектов, то дальше выполнять не надо, ваше в arWhisChildren############### //################# INFO: Если нужна структура в виде массива с 0...N в виде древа с уровнями вложенносити. /** * Поиск id * @param id * @param item * @param ar */ function findId(id, item, ar) { for(let key in ar){ if(ar[key].hasOwnProperty(id)){ ar[key][id] = item; delete arWhisChildren[id] return true; }else{ if(lodash.isEmpty(ar[key]) === false){ findId(id, item, ar[key]); } } } } for(let key in arWhisChildren){ findId(key, arWhisChildren[key], arWhisChildren); } let arResData = []; //массив данных на вывод function recursiveAdd(key, ar, level) { let item = ar[key]; let addData = arAll[key]; addData["level"] = level; if(lodash.isEmpty(item) === true){ arResData.push(addData); }else{ arResData.push(addData); for(let k in item){ let levl = level + 1; recursiveAdd(k, item, levl); } } } for(let key in arWhisChildren){ recursiveAdd(key, arWhisChildren, 1); } console.log(arWhisChildren); console.log(arResData); Где в arResData оказывается клад, ввиде конечно древа обьектов. Чтобы его вывестил просто перебери с первого елемента arResData, вложенности показаны будут свойством level. Могут быть замечания к скорости работы. Тестируй.  
    • https://www.premiumbeat.com/ru/royalty-free-music-genre/8bit?page=2
  • Forum Statistics

    • Total Topics
      247
    • Total Posts
      871
×
×
  • Create New...