2017-06-08 22 views
5

Bir okunabilirlik/yazım bakış açısından, ilgili bir değişkene göre belirli bir değişkene değer atamanın en hızlı yolu nedir? ilişki ayrı beyanname ile kaybolur çünküDizilere dayalı değişkenler atamanın en hızlı yolu nedir?

var abbrev; 

if(state=='Pennsylvania'){ 
    abbrev='PA'; 
}else if(state=='New Jersey'){ 
    abbrev='NJ'; 
}else if(state=='Delaware'){ 
    abbrev='DE'; 
} 
//and so on... 

Ben devlet adı için bir dizi yapım kaçınmaya çalışan ve kısaltma için başka dizi ediyorum.

+0

kullanın bir 'Map' (JS' Nesnesi'). Daha sonra dize değerlerini dize değerlerine sahip olabilirsiniz (ör: 'obj ['Pennsylvania'] = 'PA') – CollinD

+1

Durumu kısaltmaya çevirmek için ** bir kaç yol gerekir, bu yüzden en iyi bahsiniz muhtemelen bir ilişkisel dizidir . 'En iyi' seçeneği özneldir ve kişisel olarak 'en iyi' olarak düşündüğünüz şeye bağlıdır. Dört seçenek temel olarak bir/else ifadesi, bir anahtar deyimi, bir ilişkisel dizi veya eşleme'dir. –

cevap

7

Sen

var abbreviations = { 
     'Pennsylvania': 'PA', 
     'New Jersey': 'NJ', 
     'Delaware': 'DE' 
    }; 

Kullanımı gibi, kısaltma için bir object kullanabilirsiniz:

abbrev = abbreviations[state]; 
+0

Tam olarak ihtiyacım olan şey. Teşekkür ederim. – koleslaw

+0

@koleslaw, rica ederim. :-) –

1

sadece bir öneri, sen CASE yazılımı kullanılırken denediniz mi? o

0

denemek daha temiz ve okunabilir görünüyor:

var abbrev = ''; 
    if(state.indexOf(' ') == -1){ 
    abbrev = state.substring(0,2).toUpperCase(); 
    }else{ 
    var firstLetter = state.substring(0,1).toUpperCase(); 
    var secoundLetter = state.substring(state.indexOf(' '),1).toUpperCase(); 
    abbrev = firstLetter + secoundLetter; 
    } 
    alert(abbrev); 
+0

Bu, ' yapmaz, pennsylvania veya bir kelimeden oluşan teksas gibi durumlar için çalışır. –

+2

[başlangıç] 'da başlayalım (https://en.wikipedia.org/wiki/List_of_U.S._state_abbreviations) ... Alaska: AK – Emissary

+1

Ben Brezilya'yım, Amerikan eyaletlerini bilmiyorum, durumda, bu kod çalışır: Acre - AC, Alagoas - AL, Amazonas - AM, Sao Paulo - SP, Bahia - BA, Belo Horizonte - BH, Minas Gerais - MG, Vb ...;) – sergioBertolazzo

İlgili konular