gpt4 book ai didi

javascript - 一个对象的键值随着 JavaScript 中其他类似类型对象的更新而变化

转载 作者:行者123 更新时间:2023-11-28 14:50:45 24 4
gpt4 key购买 nike

我在两个不同的函数中使用两个不同的数组对象 initialPermissionArr[item.id]newPermissionArr[roleId]

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 }]
}

我需要初始对象数组保持相同,最后我需要将初始数组与修改后的数组进行比较,并且需要找到引用,但是在更新它在两个数组中更新的状态时。如何避免这种情况?

最佳答案

数组引用同一个对象。要仅修改其中之一,您应该使用 slice() 函数来克隆数组:

    newpermissionArr[item.id] = vm.initialPermissionArr[item.id].slice();

关于javascript - 一个对象的键值随着 JavaScript 中其他类似类型对象的更新而变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44591707/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com