Quelqu'un peut-il le vérifier pour moi ? JavaScript ne dispose pas d'une version de strcmp(), vous devez donc écrire quelque chose comme :
( str1 < str2 ) ?
-1 :
( str1 > str2 ? 1 : 0 );
Quelqu'un peut-il le vérifier pour moi ? JavaScript ne dispose pas d'une version de strcmp(), vous devez donc écrire quelque chose comme :
( str1 < str2 ) ?
-1 :
( str1 > str2 ? 1 : 0 );
Javascript ne l'a pas, comme vous le soulignez.
Une recherche rapide a permis de trouver :
function strcmp ( str1, str2 ) {
// http://kevin.vanzonneveld.net
// + original by: Waldo Malqui Silva
// + input by: Steve Hilder
// + improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// + revised by: gorthaur
// * example 1: strcmp( 'waldo', 'owald' );
// * returns 1: 1
// * example 2: strcmp( 'owald', 'waldo' );
// * returns 2: -1
return ( ( str1 == str2 ) ? 0 : ( ( str1 > str2 ) ? 1 : -1 ) );
}
de http://kevin.vanzonneveld.net/techblog/article/javascript_equivalent_for_phps_strcmp/
Bien sûr, vous pouvez simplement ajouter localeCompare si nécessaire :
if (typeof(String.prototype.localeCompare) === 'undefined') {
String.prototype.localeCompare = function(str, locale, options) {
return ((this == str) ? 0 : ((this > str) ? 1 : -1));
};
}
Et utiliser str1.localeCompare(str2)
partout, sans avoir à se soucier de savoir si le navigateur local est livré avec. Le seul problème est qu'il faudrait ajouter la prise en charge de locales
y options
si vous vous souciez de cela.
localeCompare()
est lent Si vous ne vous souciez pas de l'ordre "correct" des chaînes de caractères non anglaises, essayez votre méthode originale ou celle qui est plus propre :
str1 < str2 ? -1 : +(str1 > str2)
C'est un ordre de grandeur plus rapide que localeCompare()
sur ma machine.
El +
garantit que la réponse est toujours numérique plutôt que booléenne.
var strcmp = new Intl.Collator(undefined, {numeric:true, sensitivity:'base'}).compare;
Utilisation : strcmp(string1, string2)
Résultat : 1
signifie que la chaîne 1 est plus grande, 0
signifie égal, -1
signifie que la chaîne 2 est plus grande.
Il est plus performant que String.prototype.localeCompare
Aussi, numeric:true
permet de faire une comparaison logique de nombres
De ce Comment vérifier si deux chaînes de caractères sont égales en JavaScript article :
===
pour vérifier s'ils sont égaux.e + = é
), vous les normalisez d'abord avant de les comparer pour l'égalité comme suit- s1.normalize() === s2.normalize()
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.