-1
votes

Tableau à la conversion de tableau imbriquée

Mon service de backend m'envoie une liste de noeud comme une matrice. Mais j'ai besoin, c'est que chaque nœud suivant est la valeur de son noeud précédent (voir exemple). Je veux une liste entière comme objet imbriqué dans un objet Singe.

Qu'est-ce que j'ai: xxx

ce dont j'ai besoin: xxx


2 commentaires

Pourriez-vous avoir plus d'éléments avec des nichons différents?


Le seul déterminant de la relation enfant est-il, la position de l'objet dans le tableau d'origine? En d'autres termes, si vous ajoutez un quatrième élément dans le tableau, ce serait-il un enfant du troisième élément?


4 Réponses :


1
votes

Basé sur l'entrée / la sortie que vous avez fournie, vous pouvez utiliser une fonction récursive comme:

p>

const data = [{
    nodeId: 1
  },
  {
    nodeId: 3
  },
  {
    nodeId: 16
  }
];

const transform = data => {
  const [node, ...rest] = data;
  if (rest.length > 0) {
    return {
      ...node,
      staticChild: [transform(rest)]
    };
  } else {
    return {
      ...node,
      hasChildren: false
    };
  }
};

const result = transform(data);
console.log(result);


0 commentaires

3
votes

Vous pouvez réduire le tableau du côté droit et construire un nouvel objet avec une propriété staticchild code>.

p>

.as-console-wrapper { max-height: 100% !important; top: 0; }


0 commentaires

1
votes

Au début Inverser la matrice et la fabrication d'une itération sur la matrice vénérée à l'aide de réduit () strong> pour effectuer votre format de désir.

p>

let data = [{"nodeId": 1},{"nodeId": 3},{"nodeId": 16}]

data = data.reverse().reduce((old, cur) => {
    if (!old.length) {
        old = [cur]
    } else {
        cur['staticChild'] = old
        old = [cur]
    }
    return old
}, [])

console.log(data)


1 commentaires

L'utilisation de réducteur () vous permettra de sauve la méthode inverse () .



1
votes

Vous pouvez utiliser la méthode de la réducteur réducteur () code> pour effectuer la transformation.

p>

const nested = data.reduceRight((acc, item) => [ { ...item, staticChild: acc } ],[]);


0 commentaires