2017-06-08 47 views
5

Jaki jest najszybszy sposób, z punktu widzenia czytelności/pisania, przypisanie wartości do konkretnej zmiennej na podstawie powiązanej zmiennej?Jaki jest najszybszy sposób przypisania zmiennych w oparciu o tablicę?

var abbrev; 

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

staram się uniknąć jednej tablicy dla nazwy państwa i kolejna tablica dla skrótem ponieważ relacja jest tracona z odrębnych deklaracji.

+0

Korzystając znakiem 'Map' ('Object' w JS). Wtedy możesz mieć klucze łańcuchowe wskazujące na wartości łańcuchowe (np .: 'obj ['Pennsylvania'] = 'PA'') – CollinD

+1

Potrzebujesz ** jakiegoś ** sposobu na powiązanie stanu ze skrótem, więc twój najlepszy zakład prawdopodobnie jest tablicą asocjacyjną . Opcja "najlepsza" jest subiektywna i zależy od tego, co uważasz za "najlepsze". Cztery opcje są w zasadzie instrukcją if/else, instrukcją switch, tablicą asocjacyjną lub mapowaniem. –

Odpowiedz

7

Można użyć object dla skrótu, jak

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

Wykorzystanie:

abbrev = abbreviations[state]; 
+0

Dokładnie to, czego potrzebowałem. Dziękuję Ci. – koleslaw

+0

@koleslaw, nie ma za co. :-) –

1

tylko sugestia, czy próbowałeś użyciem przypadku? wygląda bardziej czysty i czytelny

0

spróbować:

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

To działa w stanach takich jak pennsylvania lub Texas, które składają się z jednego słowa. –

+2

Zacznijmy od [początku] (https://pl.wikipedia.org/wiki/List_of_U.S._state_abbreviations) ... 'Alaska: AK'A – Emissary

+1

Jestem Brazylijczykiem, nie znam stanów amerykańskich, w moim sprawa, ten kod działa: Acre - AC, Alagoas - AL, Amazonas - AM, São Paulo - SP, Bahia - BA, Belo Horizonte - BH, Minas Gerais - MG, Etc ...;) – sergioBertolazzo