Tôi có một đối tượng Javascript lồng nhau nhưJavascript: giá trị truy cập lồng trong dữ liệu JSON sử dụng tên biến động
var data = { 'name': { 'heading': 'Name', 'required': 1, 'type': 'String' },
'profile': {
'age': { 'heading': 'Age', 'required': 0, 'type': 'Number' },
'phone': { 'heading': 'Phone', 'required': 0, 'type': 'String'},
'city': { 'heading': 'City', 'required': 0, 'type': 'String'},
},
'status': { 'heading': 'Status', 'required': 1, 'type': 'String' }
};
Ở đây, tôi có thể truy cập vào các lĩnh vực như data.profile.age.type hoặc data.name.type . Không có vấn đề Và nếu tôi có tên biến động, tôi có thể truy cập như dưới đây. Một lần nữa, không có vấn đề gì.
f = 'profile'; data[f].age.type
Nhưng, ở đây tôi có tên biến như 'tên', 'profile.age', 'profile.city' vv và rõ ràng là tôi không thể truy cập chúng như f 'profile.age' =; dữ liệu [f] .type sẽ không hoạt động.
Có ai có thể hướng dẫn tôi cách truy cập chúng (get/set) theo cách thẳng thắn và đơn giản nhất không?
Lưu ý: Tôi đã thử cách này và nó hoạt động để có được.
data.get = function(p) { o = this; return eval('o.'+p); };
f = 'profile.age'; data.get(f).name;
mặc dù bộ dường như không đủ đơn giản. Xin vui lòng cho tôi biết, nếu có giải pháp tốt hơn để có được và thiết lập là tốt.
Bạn đã đúng để hỏi câu hỏi này trên SO. Bất cứ lúc nào bạn thấy mình sử dụng eval trong Javascript, bạn gần như chắc chắn đang làm điều sai trái. –
Cảm ơn bạn đã cho tôi biết về eval. Có thể được eval là ác! :-) – rsmoorthy
Bạn đã nói điều đó. Hãy xem gợi ý cuối cùng được cung cấp tại đây: http://javascript.crockford.com/code.html –