2011-09-13 11 views
5

Alguien sabe una buena manera de convertir esto ?:¿Cómo se mayúsculas las teclas del objeto Javascript?

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

en:

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

¿Alguna razón por la que te gustaría hacer esto? Cualquier código que esté usando las claves anteriores se romperá, porque las teclas distinguen entre mayúsculas y minúsculas. –

+0

¿Está buscando una expresión regular o una forma de hacerlo mientras se ejecuta el código? – tjameson

+1

@Marc B, muy bien podría elegir hacer esto si, por ejemplo, estoy haciendo jqgrids y los nombres de columna tienen una primera letra en mayúscula. Luego diga que estoy recuperando a json de una API existente y que las claves realmente tienen que coincidir con el caso para que la jqgrid funcione correctamente. En este caso, me gustaría garantizar que las claves que obtengo del json también tengan una primera letra en mayúscula y ergo, coincidencia. –

Respuesta

13

Bucle a través de eliminar y reemplazar: la función _.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, pero tenga en cuenta que si el objeto inicial contiene tanto una versión en minúscula como mayúscula inicial de un nombre de clave particular, esta última se sobrescribirá. Es decir, '{key1: 1, Key1: 2}' terminará como '{Key1: 1}'. (Además, el 'obj [i] = a;' después de 'for' es redundante ¿no?) – nnnnnn

+0

La única diferencia es que utilicé slice en vez de subserie. De lo contrario, esto es excelente. –

-2

uso de lodash

_.capitalize('firstName') => FirstName

Cuestiones relacionadas