2017-09-20 6 views
0

J'ai un tableau trié d'objets. Ils ne sont pas attachés les uns aux autres par des identifiants, seulement par des textes.Création de PrimeNG TreeTable json à partir du tableau d'objets

let result = [ 
    { col1: "A" , col2: "a" , col3: "1", col4: [10,15] }, 
    { col1: "A" , col2: "c" , col3: "1", col4: [30,35] }, 
    { col1: "B" , col2: "b" , col3: "1", col4: [20,25] }, 
    { col1: "C" , col2: "d" , col3: "1", col4: [40,45] }, 
    { col1: "C" , col2: "d" , col3: "2", col4: [50,55] }, 
    { col1: "D" , col2: "e" , col3: "3", col4: [60,65] }, 
    { col1: "D" , col2: "e" , col3: "4", col4: [70,75] }, 
    { col1: "D" , col2: "f" , col3: "1", col4: [80,85] } 
] 

J'ai besoin de tirer le TreeTable suivant de ce tableau: enter image description here

The plunker link

Ainsi, le tableau de résultat seront convertis en ceci:

this.data = [ 
    { 
     // COL1 
     data:{ 
      label:"A" 
     }, 
     children:[ 
      { 
       // COL2 
       data:{ 
        label: "a" 
       }, 
       children:[ 
        { 
         // COL3 
         data:{ 
          label: "1", 
          clusters: [10,15] 
         } 
        } 
       ] 
      }, 
      { 
       // COL2 
       data:{ 
        label: "c" 
       }, 
       children:[ 
        { 
         // COL3 
         data:{ 
          label: "1", 
          clusters: [30,35] 
         } 
        } 
       ] 
      } 
     ] 
    }, 
    { 
     // COL1 
     data:{ 
      label:"B" 
     }, 
     children:[ 
      { 
       // COL2 
       data:{ 
        label: "b" 
       }, 
       children:[ 
        { 
         // COL3 
         data:{ 
          label: "1", 
          clusters: [20,25] 
         } 
        } 
       ] 
      } 
     ] 
    }, 
    { 
     // COL1 
     data:{ 
      label:"C" 
     }, 
     children:[ 
      { 
       // COL2 
       data:{ 
        label: "d" 
       }, 
       children:[ 
        { 
         // COL3 
         data:{ 
          label: "1", 
          clusters: [40,45] 
         } 
        }, 
        { 
         // COL3 
         data:{ 
          label: "2", 
          clusters: [50,55] 
         } 
        } 
       ] 
      } 
     ] 
    }, 
    { 
     // COL1 
     data:{ 
      label:"D" 
     }, 
     children:[ 
      { 
       // COL2 
       data:{ 
        label: "e" 
       }, 
       children:[ 
        { 
         // COL3 
         data:{ 
          label: "3", 
          clusters: [60,65] 
         } 
        }, 
        { 
         // COL3 
         data:{ 
          label: "4", 
          clusters: [70,75] 
         } 
        } 
       ] 
      }, 
      { 
       // COL2 
       data:{ 
        label: "f" 
       }, 
       children:[ 
        { 
         // COL3 
         data:{ 
          label: "3", 
          clusters: [80,85] 
         } 
        } 
       ] 
      } 
     ] 
    } 
]; 

J'ai J'ai essayé un certain nombre de choses comme grouper le tableau des résultats, juste faire une boucle avec le tableau des résultats ... mais je n'ai pas pu g et ceci a résolu et finalement s'est perdu.

Pouvez-vous m'aider à créer le tableau de données à partir du tableau de résultats?

Répondre

2

essayez ceci:

let data = []; 
result.forEach((r, i) => { 
    let d; 
    for (let i = 1; i <= 3; i ++) { 
    const l = r["col"+i]; 
    const rg = d ? (d.children || (d.children = [])) : data; 
    d = rg.find(e => e.data.label === l) || (rg[rg.length] = { data: { label: l }}); 
    } 
    d.data.clusters = r["col4"]; 
}); 
console.log(data);