2012-02-22 19 views
5

Tôi có một đối tượng. Có cách nào để chạy toUppercase trên tất cả các phím của nó? Những gì tôi đang làm là cố gắng chữ hoa mọi phần tử trong đối tượng nàyTôi có thể chạy phương pháp chữ hoa trên một đối tượng không?

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

tôi đã không nhận được lệnh trên để làm việc cho tôi. Tôi là một chút mới với điều này, vì vậy đánh giá cao sự giúp đỡ nào!

+0

có thể giúp bạn cho tôi biết giá trị JSONObj chính xác mà bạn nhận được ở địa điểm đó, để chúng tôi có thể tách khóa và giá trị –

+0

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

Trả lời

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; 
} 

Sử dụng phương pháp này để tạo ra một đối tượng mới với các phím khác nhau:

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

Nếu bạn muốn thay đổi một đối tượng (thay đổi chẳng hạn), sử dụng

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 đừng quên xóa các mục gốc. –

+0

không, phương pháp này sẽ tạo một đối tượng * mới *. – Bergi

+0

Ồ, bạn hoàn toàn đúng. Lấy làm tiếc. –

Các vấn đề liên quan