2016-04-04 13 views
2

Bu sorunun var olduğunu düşünürdüm ama bir cevap bulamamış gibi görünüyor.JavaScript - Birden çok dizginin birbirine benzememesinin düzenli bir yolu birbirine eşit değildir

4 değişkenim var ve her birinin içeriğinin (dizgisi) birbirinden bağımsız/benzersiz olmadığından emin olmak istiyorum.

Bu yüzden bunu uzun bir if bildirimi ve çoklu denetimlerle yapabileceğimi biliyorum.

var a = 'aword'; 
var b = 'bword'; 
var c = 'cword'; 
var d = 'dword'; 

if (a != b && a !=c && a !=d && b!=c........) { ... } 

Ancak bu oldukça uzun bir şekilde sarılmıştır, eksik olduğum daha basit bir yol var mı.

Teşekkürler.

+0

Bu çeke ihtiyacınız olan tek nokta budur ve sadece 4 çeşitiniz var, sanırım bu iyi bir yöntem. Ama bu kontrolü yapmak için ihtiyacınız olan daha fazla yer var, o zaman bunu yapmak için bir işleve ihtiyacınız var. –

+1

Her zaman 4 değişken olacak mı? Onları bir diziye kaydedebilir misin? Bu, özyinelemeli bir yöntemin mükemmel bir kullanımıdır. – Gremash

cevap

4

Bunları bir diziye yerleştirin, bunlarla döngü yapın ve benzersiz olup olmadığını görmek için bunları bir nesnenin anahtarları olarak kullanın. Eğer jQuery veya Underscore.js gibi kütüphaneleri kullanıyorsanız

var obj = {}; 
var arr = [a, b, c, d]; 
for (var i = 0; i < arr.length; i++) { 
    if (arr[i] in obj) { 
     console.log("Duplicate of " + arr[i] + " found"); 
     break; 
    } 
    obj[arr[i]] = true; 
} 

Ayrıca, onlar bir dizinin özgün elemanlarını almak için fonksiyonları var, bunu kullanabilirsiniz.

: Sadece tüm değerler yukarıda ECMA-Script 6 ve beri, siz (bir dizi benzersiz değerlerin bir sırasız koleksiyon) Set koleksiyonunu kullanabilirsiniz, benzersiz olmasını kontrol arıyorsanız

if ($.unique([a, b, c, d]).length == 4) { 
    ... 
} 
+0

Teşekkürler - bu bir dizi içine yerleştirerek bu ipucu oldu :-) – userMod2

+1

Bazı düzgün bir şekilde tedavi etmek istediğiniz şeyler bir koleksiyon varsa, ilk eğilim bir dizi içine koymak olmalıdır. Programlama 101. – Barmar

+0

@ usermod2 Cevabıma bir bakabilirim. Modern ve vanilyalı JavaScript'in eşsiz koleksiyonları ele almak için daha iyi bir çözümü var! –

1

var a = 'aword'; 
 
var b = 'bword'; 
 
var c = 'cword'; 
 
var d = 'dword'; 
 
var values = [a, b, c, d]; 
 
var set = new Set(values); 
 

 
if (set.size == values.length) { 
 
    alert("they're all distinct values"); 
 
}

Set Chrome, Firefox, IE11, Safari (see brower compatibility on MDN) modern versiyonları zaten mevcuttur. Büyük harf duyarlılığı ile ilgileniyor musunuz?

+0

Bu iyi görünüyor - ancak tam tarayıcı desteği hakkında endişe – userMod2

+0

@ userMod2 Bu yüzden size tarayıcı desteği kontrol etmek için bir bağlantı verdim. AFAIK, eğer sadece bu problemi çözmek istiyorsanız, 'Set''i çok sınırlı bir şekilde kullandığınız için çok güvenli görünüyor. Her neyse, böyle bir polyfill kullanabilirsiniz: https://www.npmjs.com/package/es6-set –

İlgili konular