Yalnız değilsin - diğer insanlar bunu daha önce yapmış. PHP.JS projesi Aslında bunu diğer birçok ortak işlev için de yaptı. Bu kullanışlı bir kaynak. - Reed Copsey
localeCompare () iyi görünüyordu, ama sadece MS'e benziyordu ya da en iyi standartta değildi.
newacct kesinlikle doğrudur. Bu ECMAScript standardı gibi görünüyor. Muhtemelen bu durumda en iyi çözüm. - coderjoe
localeCompare() bazen her tarayıcıda farklı davranır. - Varda Elentári
@ VardaElentári: Yalnızca belirli yerel ayarlarda sözcüksel düzenleri olmayan karakterler için. Karakterler için yap ve hangi Unicode parçasını kullandıklarını kısıtlamayan tarayıcılar, sonuçlar tutarlı ve ECMA-402 ve Unicode tarafından tanımlanmış. - T.J. Crowder
Hızlı bir arama ile geldi:
Elbette, gerekirse sadece localeCompare ekleyebilirsin:
Ve kullan str1.localeCompare(str2) Her yerde, yerel tarayıcı onunla birlikte gönderilip gönderilmediğine bakmaksızın. Tek sorun şu ki; locales ve options eğer bunu önemsersen
Bunun iyi bir yöntem olduğunu düşünüyorum (özellik tespiti ve polyfill FTW), fakat eğer mikro hız performansı çok önemliyse, bu yönteme ihtiyaç duyulduğunda, o zaman biraz şaşkınım. == kullanılır ve değil === İkincisi, tip dönüşümünü engellediğinden ve dolayısıyla mikro saniye daha hızlıdır. - Tokimon
localeCompare() yavaşBu nedenle, ingilizce olmayan karakter dizelerinin "doğru" sırasını umursamıyorsanız, özgün yönteminizi veya daha temiz görünen birini deneyin:
Bu, daha büyük bir büyüklük sırasına göre localeCompare() benim makinemde.
+ yanıtın boolean yerine her zaman sayısal olmasını sağlar.
İki hata: str1 == str2 için 0 değil, str1> str2 için 1 döndürmez - stackunderflow
@stackunderflow Bu durumlarda geri dönmesini öneriyor musunuz? - 1''
@stackunderflow Bir sıralama fonksiyonunda başarıyla kullanıyorum. Yaşadığınız böcek nedir? - 1''
Bir şey daha var (bunu şu anda yazdığım kodda kullanıyorum, bu yüzden mükemmelleştiriyorum): sadece bunun büyük / küçük harfe duyarlı bir karşılaştırma olduğunu unutmayın ('Foo', 'bar' dan önce gelir ama ' Bar 'foo' sonra gelecek. Bu OP'nin strcmp ile ilgili sorusuna karşılık gelir, ancak birçok kişi burada bir vaka-agnostik karşılaştırma aramak için gelebilir. - jfren484
İşte daha temiz görünümlü bir ifade: (str1 > str2) - (str1 < str2) - Jonathan Gilbert
Daha sonra, s1'i 2 ile karşılaştırmak için:
Neden yaptıklarını yapmamaları gerektiğini söylediyseniz yardımcı olur. Mevcut bir fonksiyon yönteminin nasıl çalıştığını değiştirip değiştirmediklerini anlayabiliyordum, ama bu durumda yeni bir tane ekliyorlar. - Relaxing In Cyprus