En JavaScript, il est essentiel de comparer efficacement des tableaux contenant des objets, en particulier lorsque ces objets contiennent plusieurs propriétés et peuvent avoir des valeurs manquantes. Une approche naïve pourrait impliquer une itération sur chaque tableau, en comparant les propriétés individuelles. Cependant, pour les cas où les tableaux sont limités à une taille spécifique (par exemple, jusqu'à 8 éléments) et à un nombre de propriétés, une solution plus élégante existe.
Une approche consiste à exploiter les techniques de sérialisation d'objets. Cependant, il convient de noter que la sérialisation seule n'est pas suffisante car l'ordre des propriétés des objets affecte les résultats. Par conséquent, une méthode plus robuste est nécessaire.
Considérez la fonction suivante :
<code class="javascript">const objectsEqual = (o1, o2) => Object.keys(o1).length === Object.keys(o2).length && Object.keys(o1).every(p => o1[p] === o2[p]);</code>
Cette fonction vérifie le nombre de propriétés dans les deux objets (Object.keys(o1).length) et compare chaque clé de propriété (p) pour s'assurer que leurs valeurs correspondantes (o1[p]) sont égales.
Par exemple, étant donné les objets suivants :
<code class="javascript">const obj1 = { name: 'John', age: 33}; const obj2 = { age: 33, name: 'John' }; const obj3 = { name: 'John', age: 45 };</code>
La fonction appelle objetsEqual( obj1, obj2) renverrait vrai car les deux objets ont les mêmes propriétés avec des valeurs équivalentes, tandis que objetsEqual(obj1, obj3) renverrait faux en raison des valeurs d'âge différentes.
Cette approche offre un moyen concis et efficace de comparez les objets dans les tableaux, en tenant compte des valeurs de propriété manquantes et de l'ordre des propriétés.
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!