我有一個這樣的JSON對象在我的申請:JSON:如何處理從密鑰派生的屬性?
var pages = {
home: {
title: "Home",
description: "The home page",
file: "home.html",
url: "/home"
},
blog: {
title: "Blog",
description: "Our blog",
file: "blog.html",
url: "/blog"
}
};
性質file
和url
總是可以從相應的密鑰導出的,所以目前限定上述目的這樣在我的代碼:
var pages = {
home: {
title: "Home",
description: "The home page"
},
blog: {
title: "Blog",
description: "Our blog"
}
};
$.each(pages, function(key, value) {
value.file = key + ".html";
value.url = "/" + key;
}
但是,由於file
和url
是派生屬性,所以將它們添加到對象似乎是多餘的。但因爲我傳遞值周圍的每一頁,不是關鍵,我必須將它添加到對象爲好,這也將是多餘的。像這樣:
var pages = {
home: {
title: "Home",
description: "The home page"
},
blog: {
title: "Blog",
description: "Our blog"
}
};
$.each(pages, function(key, value) {
value.jsonKey = key;
}
現在我有三種不同的方法,並不真的喜歡其中的任何一種。我認爲這應該是一個相當普遍的問題,那麼你如何解決這個問題呢?那麼如果派生屬性將被多次使用呢?
我沒有注意到這一點,但我實際上需要根據他們的密鑰訪問頁面。實際上基於它們的URL而不是前導「/」,這等於密鑰。 – futlib 2011-04-28 06:23:29
AFAIK沒有* *優雅的方式來訪問從對象鍵不重複的頁面對象的關鍵。這些鍵不是單個頁面對象的一部分。注意:您還可以找到自己的解決方案通過按鍵頁(你只需要在列表中搜索着,當然,這將是比對象屬性訪問速度較慢)。 – z33m 2011-04-28 12:18:25