Javascript 接头不会从阵列中删除图元
编辑 嗯,这确实令人尴尬。谢谢大家注意到这个拼写错误,我本想删除这个问题,但我不能(因为它有答案)。让这成为一座纪念碑吧 我正在尝试编写一个应用程序,在给定一个对象和一个数组的情况下,将该对象从数组中删除(如果存在),或者将其添加到数组中(如果不存在) 初始数组:Javascript 接头不会从阵列中删除图元,javascript,arrays,angularjs,Javascript,Arrays,Angularjs,编辑 嗯,这确实令人尴尬。谢谢大家注意到这个拼写错误,我本想删除这个问题,但我不能(因为它有答案)。让这成为一座纪念碑吧 我正在尝试编写一个应用程序,在给定一个对象和一个数组的情况下,将该对象从数组中删除(如果存在),或者将其添加到数组中(如果不存在) 初始数组: var permissions = [{ id: 3, name: "Perm3" }, { id: 1, name: "Perm1" }]; triggerPer
var permissions = [{
id: 3,
name: "Perm3"
}, {
id: 1,
name: "Perm1"
}];
triggerPermission = function(perm) {
var idx = permissions.indexOfById(perm);
if (idx === -1) {
permissions.push(perm);
} else {
permissions.slice(idx, 1); //should have been SPLICE...
}
};
Array.prototype.indexOfById = function(obj) {
var idx = -1;
for (var i = 0; i < this.length; i++) {
if (this[i].id === obj.id) {
idx = i;
break;
}
}
return idx;
};
添加\删除功能:
var permissions = [{
id: 3,
name: "Perm3"
}, {
id: 1,
name: "Perm1"
}];
triggerPermission = function(perm) {
var idx = permissions.indexOfById(perm);
if (idx === -1) {
permissions.push(perm);
} else {
permissions.slice(idx, 1); //should have been SPLICE...
}
};
Array.prototype.indexOfById = function(obj) {
var idx = -1;
for (var i = 0; i < this.length; i++) {
if (this[i].id === obj.id) {
idx = i;
break;
}
}
return idx;
};
辅助功能:
var permissions = [{
id: 3,
name: "Perm3"
}, {
id: 1,
name: "Perm1"
}];
triggerPermission = function(perm) {
var idx = permissions.indexOfById(perm);
if (idx === -1) {
permissions.push(perm);
} else {
permissions.slice(idx, 1); //should have been SPLICE...
}
};
Array.prototype.indexOfById = function(obj) {
var idx = -1;
for (var i = 0; i < this.length; i++) {
if (this[i].id === obj.id) {
idx = i;
break;
}
}
return idx;
};
Array.prototype.indexOfById=函数(obj){
var-idx=-1;
for(var i=0;i
如图所示,我正在尝试在AngularJS应用程序中使用此选项,并使用复选框作为触发器。有些权限是通过splice
返回的(但权限数组没有更改),有些甚至没有返回。我在这里遗漏了什么?您的代码使用的是,不是
slice
不修改数组,它返回修改后的副本
splice
是您所追求的方法,它可以在适当的位置修改阵列。正是meagar所说的。切片将获取数组的一部分,但保持数组不变。Splice实际上会“剪接”一些内容。如果你发布的答案没有给已经发布的另一个答案添加任何内容,只需删除重复的答案。如果你阅读我发布的内容,你就会意识到我添加了一个解释。由于我还不能添加评论,我发布了另一个答案。