我在想這一定是一個常見的問題,但似乎無法找到解決方案。 使用JSON配置文件來擴展包含對象和數組的jQuery對象。修改jQuery擴展到推送對象內的數組項目,但擴展其他對象
對於對象和簡單的屬性,我想覆蓋(因爲extend
很好)。
對於數組,可能存在或不存在現有項目。
目前數組只是覆蓋的第一要素
var sourceObj = {propterty:"change Me",anArray:[{name:"first"},{name:"second"}]},
configJSON = '{"propterty":"New Val","anArray":[{"name":"third"}]}',
configObj = JSON.parse(configJSON);
$.extend(true,sourceObj,configObj);
這將返回:
{propterty:"New Val" , anArray:[{name:"third"},{name:"second"}}
我可以代替得到:
{propterty:"New Val",anArray:[{name:"first"},{name:"second"},{name:"third"}]}
,同時還允許更新「第一」和「第二」對象?
"anArray":[{"name":"second","newProp":"add newProp to second"}]
可以/應該extend
進行修改,以比較陣列項目,延長或新增一些規則或設置屬性值,如「名」?
感謝您的任何建議或指針。
這似乎是最接近我發現可能做到這一點 - http://stackoverflow.com/questions/3748697/jquery-extend-arra y-of-objects –
'$ .extend'的正常使用用於將用戶提供的選項與默認值合併。在這種情況下,通常最好使用新屬性來完全替換原始對象中的一個;追加數組屬性不符合它通常使用的方式。你需要做什麼? – Barmar
@Barmar這是一個用例,但還有很多其他...包括將新的函數/方法擴展到jQuery對象本身 – charlietfl