[英]How to push arrays into an associative array, and then retrieve the values for comparison?
我的問題是我想創建一個數組,以保存可以相互比較的多個數組。 這將用於同時跨多個頁面更改復選框。
例如,我想要:
masterArray = [];
masterArrayChanged = [];
然后能夠做到這一點:
masterArray["pageName"][ARRAY OF CHECKBOXES HERE]
masterArrayChanged["pageName"][ARRAY OF CHECKBOXES HERE ];
On user checkbox click => masterArrayChanged["pageName"].push({thisCheckBox});
以便稍后我可以去比較兩個數組以查看用戶是否進行了更改:
jQuery.grep(masterArrayChanged["pageName"], function(el) {
if (jQuery.inArray(el, masterArray["pageName"]) == -1) alert(el);
});
知道這是否可行嗎? 或者是否有更好的方法來實現我想要的?
好的,我想我回答了我自己的問題。 如果這是錯誤的,或者有更有效的方法來做到這一點,請糾正我:
var pagename,
masterArrayChanged= [],
masterArray = [];
var updateFunc = function(checkBox,action,page){
if(action === 'add') {
masterArrayChanged[page].push({ checkBox });
}
else {
masterArrayChanged[page].splice( $.inArray(checkBox, masterArrayChanged[tabID]), 1 );
}
console.dir(masterArrayChanged[page]);
}
是的,這是可行的。 唯一的問題是,比較數組最終可能會占用大量資源,尤其是當您要處理大量數據時。
那么為什么不是只有一個數組來跟蹤發生的變化,而不是兩個數組呢? 所以在提交時,你只檢查數組中是否有任何值。 如果有值,則您知道更改是由用戶完成的。
您可能還想為復選框提供標識符,因此當復選框(或復選框組)更改時,將其標識符添加到數組/對象中,如果用戶撤消更改,則刪除標識符
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.