Maison  >  Article  >  interface Web  >  Comment aplatir des objets imbriqués de manière concise en JavaScript ?

Comment aplatir des objets imbriqués de manière concise en JavaScript ?

DDD
DDDoriginal
2024-10-22 13:36:02647parcourir

How to Flatten Nested Objects Concisely in JavaScript?

Aplatir les objets imbriqués de manière concise

La transformation d'un objet imbriqué en une structure aplatie est souvent nécessaire dans divers scénarios de programmation. Pour une solution rapide et efficace, vous pouvez utiliser une ligne concise.

Pour aplatir l'objet imbriqué fourni :

{
  a:2,
  b: {
    c:3
  }
}

dans la sortie souhaitée :

{
  a:2,
  c:3
}

Utilisez l'expression JavaScript suivante :

Object.assign({}, ...function _flatten(o) { return [].concat(...Object.keys(o).map(k => typeof o[k] === 'object' ? _flatten(o[k]) : ({[k]: o[k]})))}(yourObject))

Le concept principal derrière cette approche est de créer de manière récursive un tableau d'objets à propriété unique. La méthode Object.keys(o) récupère toutes les clés de l'objet d'entrée o. Chaque clé k est ensuite vérifiée pour le type d'objet. Si typeof o[k] === 'object', la fonction _flatten est appliquée de manière récursive à l'objet imbriqué. Sinon, il construit un objet à une propriété avec la clé k et la valeur o[k].

La syntaxe [].concat(... combine tous ces objets à une propriété en un seul tableau. Enfin, Object.assign({}, ...) fusionne ces tableaux dans la sortie aplatie souhaitée.

Pour plus de lisibilité, le code peut être reformaté comme suit :

Object.assign(
  {},
  ...function _flatten(o) {
    return [].concat(...Object.keys(o)
      .map(k =>
        typeof o[k] === 'object' ?
          _flatten(o[k]) :
          ({[k]: o[k]})
      )
    );
  }(yourObject)
)

Celui-ci- liner aplatit efficacement les objets imbriqués, offrant une solution concise et efficace pour vos besoins de transformation de données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn