我使用兩個不同的陣列對象initialPermissionArr[item.id]
和newPermissionArr[roleId]
在兩個不同的函數一個對象的密鑰值上的其他類似類型的對象的更新改變的JavaScript
function(item){
vm.initialPermissionArr[item.id] = item.permissions.map(function (permission) {
permission.status = true;
return permission;
});
}
staticArr[item.id] = item.permissions.map(function (permission) {
permission.status = true;
return permission;
});
newpermissionArr[item.id] = vm.initialPermissionArr[item.id];
下面函數更新陣列中,如果相同的對象發現更新狀態,並在新的對象被發現其推向newPermissionArr
function onChanageOfPermission(roleId,item) {
var flag = false ;
for (var key in newpermissionArr[roleId]){
if(newPermissionArr[roleId][key].id == item.id){
flag = true;
newPermissionArr[roleId][key].status = item.status;
break;
}
}
if (!flag) {
newPermissionArr[roleId].push(item);
}
}
所以當newPermissionArr[roleId][key].status = item.status;
更新也更新在initialPermissionArr[item.id]
也狀態。 和初始聲明是
var newPermissionArr = [];
var staticArr = [];
其中用於例如產品
{
roleId : 1,
permissions : [{"name": "A", "id" : 1},{ "name" : "B", "id" : 2 }]
}
我需要初始對象陣列保持相同,並在端我需要初始陣列與所述修改後的數組比較和需要找到參考,然後更新它在兩個陣列中更新的狀態。如何避免這種情況?
這兩個'數組'可能都有對同一個'對象'的引用? – Arg0n
哪裏可以被引用是相同的,我不會在任何地方複製到彼此 – atjoshi
很難說當你沒有包括如何/當你使用'onChangeOfPermission'時,以及你作爲'item'傳入的東西。 – Arg0n