क्या कोई मेरे लिए इसे सत्यापित कर सकता है? JavaScript में strcmp () का संस्करण नहीं है, इसलिए आपको कुछ इस तरह लिखना होगा:
( str1 < str2 ) ?
-1 :
( str1 > str2 ? 1 : 0 );
क्या कोई मेरे लिए इसे सत्यापित कर सकता है? JavaScript में strcmp () का संस्करण नहीं है, इसलिए आपको कुछ इस तरह लिखना होगा:
( str1 < str2 ) ?
-1 :
( str1 > str2 ? 1 : 0 );
जवाबों:
व्हाट अबाउट
str1.localeCompare(str2)
localeCompare()
कभी-कभी प्रत्येक ब्राउज़र पर अलग तरह से व्यवहार करता है।
जावास्क्रिप्ट आपके पास नहीं है, जैसा कि आप बताते हैं।
एक त्वरित खोज के साथ आया:
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 ) );
}
से http://kevin.vanzonneveld.net/techblog/article/javascript_equivalent_for_phps_strcmp/
यदि आवश्यक हो, तो बेशक, आप केवल localeCompare जोड़ सकते हैं:
if (typeof(String.prototype.localeCompare) === 'undefined') {
String.prototype.localeCompare = function(str, locale, options) {
return ((this == str) ? 0 : ((this > str) ? 1 : -1));
};
}
और str1.localeCompare(str2)
हर जगह का उपयोग करें , चिंता किए बिना स्थानीय ब्राउज़र ने इसके साथ भेज दिया है। एकमात्र समस्या यह है कि आपको इसके लिए समर्थन जोड़ना होगा locales
औरoptions
यदि आप इस बारे में परवाह करेंगे।
==
जिसका उपयोग किया जाता है और ===
बाद वाले से बचने के लिए नहीं प्रकार रूपांतरण और इसलिए यह माइक्रो दूसरा तेजी से है।
var a = this.toUpperCase(); var b = str.toUpperCase(); return ((a == b) ? 0 : ((a > b) ? 1 : -1));
localeCompare()
यह धीमा है , इसलिए यदि आप गैर-अंग्रेजी-वर्ण स्ट्रिंग्स के "सही" क्रम के बारे में परवाह नहीं करते हैं, तो अपने मूल तरीके या क्लीनर को आज़माएं:
str1 < str2 ? -1 : +(str1 > str2)
यह localeCompare()
मेरी मशीन की तुलना में अधिक तीव्रता का क्रम है ।
यह +
सुनिश्चित करता है कि उत्तर बूलियन के बजाय हमेशा संख्यात्मक हो।
(str1 > str2) - (str1 < str2)
var strcmp = new Intl.Collator(undefined, {numeric:true, sensitivity:'base'}).compare;
उपयोग: strcmp(string1, string2)
परिणाम: 1
string1 बड़ा है, 0
इसका मतलब बराबर है, -1
इसका मतलब string2 बड़ा है।
की तुलना में इसका प्रदर्शन अधिक है String.prototype.localeCompare
इसके अलावा, numeric:true
यह तार्किक संख्या की तुलना करता है
कैसा रहेगा:
String.prototype.strcmp = function(s) {
if (this < s) return -1;
if (this > s) return 1;
return 0;
}
फिर, 2 के साथ s1 की तुलना करने के लिए:
s1.strcmp(s2)