Comparer efficacement des tableaux en JavaScript
Introduction
Comparer des tableaux en JavaScript peut être délicat. L'opérateur de comparaison (==) ne fonctionne pas comme prévu et la conversion de tableaux en JSON à des fins de comparaison peut s'avérer inefficace. Voici un guide complet pour comparer efficacement les tableaux :
Comparaison des tableaux
Pour effectuer une comparaison efficace des tableaux, suivez ces étapes :
1 . Méthode Equals personnalisée :
Définissez une méthode personnalisée sur le Array.prototype appelée Equals. Cette méthode comparera de manière récursive chaque élément des tableaux.
Array.prototype.equals = function (array) { if (!array) return false; if (this === array) return true; if (this.length !== array.length) return false; for (let i = 0; i < this.length; i++) { if ( this[i] instanceof Array && array[i] instanceof Array ) { if (!this[i].equals(array[i])) return false; } else if (this[i] !== array[i]) { return false; } } return true; };
2. Utilisation :
Pour comparer deux tableaux à l'aide de la méthode égale, appelez-la simplement sur l'un d'eux comme :
[1, 2, [3, 4]].equals([1, 2, [3, 2]]) === false;
Comparaison d'objets
Comparer partiellement des objets est possible, mais vous devez être conscient que deux instances d'objet ne seront jamais égales même si elles contiennent la même chose. données.
1. Méthode d'égalité personnalisée pour les objets :
Object.prototype.equals = function (object2) { for (let propName in this) { if ( this.hasOwnProperty(propName) !== object2.hasOwnProperty(propName) ) { return false; } else if ( typeof this[propName] !== typeof object2[propName] ) { return false; } } for (let propName in object2) { if ( this.hasOwnProperty(propName) !== object2.hasOwnProperty(propName) ) { return false; } else if ( typeof this[propName] !== typeof object2[propName] ) { return false; } if (!this.hasOwnProperty(propName)) continue; if ( this[propName] instanceof Array && object2[propName] instanceof Array ) { if (!this[propName].equals(object2[propName])) return false; } else if ( this[propName] instanceof Object && object2[propName] instanceof Object ) { if (!this[propName].equals(object2[propName])) return false; } else if (this[propName] !== object2[propName]) { return false; } } return true; };
2. Utilisation :
({ a: 1, foo: "bar", numberOfTheBeast: 666 }).equals({ a: 1, foo: "bar", numberOfTheBeast: 666, }) === false;
Tableaux imbriqués avec indexOf et contient
Pour les cas plus complexes impliquant des tableaux imbriqués, vous pouvez utiliser les fonctions indexOf et contient pour rechercher pour des objets spécifiques imbriqués tableaux.
Conclusion
En suivant ces techniques, vous pouvez comparer efficacement des tableaux et des objets en JavaScript, en éliminant les pièges courants et en vous permettant d'effectuer de telles comparaisons en toute confiance.
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!