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: p> ce dont j'ai besoin: p>
4 Réponses :
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); Vous pouvez réduire le tableau du côté droit et construire un nouvel objet avec une propriété p> staticchild code>. .as-console-wrapper { max-height: 100% !important; top: 0; }
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)
L'utilisation de réducteur () code> vous permettra de sauve la méthode inverse () code>.
Vous pouvez utiliser la méthode de la réducteur p> réducteur () code> pour effectuer la transformation. const nested = data.reduceRight((acc, item) => [ { ...item, staticChild: acc } ],[]);
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?