क्या कोई मेरे लिए इसे सत्यापित कर सकता है? 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)
परिणाम: 1string1 बड़ा है, 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)