2012-02-22 11 views
5

Mam obiekt. Czy istnieje sposób, aby uruchomić DoUppercase na wszystkich swoich kluczy? Co robię stara się wielkie litery każdy element w tym obiekcieCzy mogę uruchomić metodę wielkimi literami na obiekcie?

JSON.stringify(JSONObj.people).toUpperCase() 

I nie dostał powyższego polecenia do pracy dla mnie. Jestem trochę nowy, więc doceń każdą pomoc!

+0

może cię powiedz mi dokładną wartość JSONObj, którą dostaniesz w tym miejscu, abyśmy mogli oddzielić klucz od wartości: –

+0

{"John Smith": 25, "Jane Doe": 46, "Ben Franklin": 32} – astuttle

Odpowiedz

6
Object.withUpperCaseKeys = function upperCaseKeys(o) { 
// this solution ignores inherited properties 
    var r = {}; 
    for (var p in o) 
     r[p.toUpperCase()] = o[p]; 
    return r; 
} 

użyć tej metody do tworzenia nowy obiekt z różnych kluczy:

JSONObj.people = Object.withUpperCaseKeys(JSONObj.people); 

Jeśli chcesz zmienić obiekt (modyfikowania instancji), użyj

Object.upperCaseKeys = function upperCaseKeys(o) { 
// this solution ignores inherited properties 
    for (var p in o) 
     if (p.toUpperCase() != p) { 
      p[p.toUpperCase()] = o[p]; 
      delete o[p]; 
     } 
    return o; // just for easier chaining 
} 

Object.upperCaseKeys(JSONObj.people); 
+0

Don nie zapomnij usunąć oryginalnych przedmiotów. –

+0

nie, ta metoda utworzy obiekt * nowy *. – Bergi

+0

Och, masz absolutną rację. Przepraszam. –

Powiązane problemy