2011-09-13 10 views
5

Qualcuno sa un buon modo per trasformare questo ?:Come digitare le chiavi di oggetti Javascript in maiuscolo?

var obj = [{key1: value1,key2: value2},{key3: value3,key4: value4}]; 

in:

var obj = [{Key1: value1,Key2: value2},{Key3: value3,Key4: value4}]; 
+3

Qualche ragione per cui vorresti farlo? Qualsiasi codice che utilizza le chiavi precedenti si interromperà, poiché le maiuscole e minuscole sono sensibili al maiuscolo/minuscolo. –

+0

Stai cercando un'espressione regolare o un modo per farlo mentre il codice è in esecuzione? – tjameson

+1

@Marc B, posso benissimo scegliere di farlo se, ad esempio, sto creando jqgrids e i nomi delle colonne hanno una prima lettera maiuscola. Quindi dì che sto recuperando un json da un'API esistente e che le chiavi devono corrispondere al caso in modo che jqgrid funzioni correttamente. In questo caso, vorrei garantire che anche le chiavi che ho ricevuto da JSON abbiano una prima lettera maiuscola ed ergo, match. –

risposta

13

Loop attraverso eliminare e sostituire: la funzione _.capitalize

var obj = [{key1: 1,key2: 1},{key3: 1,key4: 1}]; 
for(var i = 0; i<obj.length;i++) { 

    var a = obj[i]; 
    for (var key in a) { 
     var temp; 
     if (a.hasOwnProperty(key)) { 
      temp = a[key]; 
      delete a[key]; 
      a[key.charAt(0).toUpperCase() + key.substring(1)] = temp; 
     } 
    } 
    obj[i] = a; 

} 
+0

+1, ma si noti che se l'oggetto iniziale contiene sia una versione minuscola che iniziale-caps di un particolare keyname, quest'ultimo verrà sovrascritto. I.e, '{key1: 1, Key1: 2}' finirà con '{Key1: 1}'. (Inoltre, 'obj [i] = a;' dopo che 'for' è ridondante no?) – nnnnnn

+0

L'unica differenza è che ho usato slice invece di sottostringa. Altrimenti, questo è eccellente. –

-2

utilizzo lodash

_.capitalize('firstName') => FirstName

Problemi correlati