修改
嗯,这确实令人尴尬。谢谢大家注意到错字,我会删除这个问题,但我不能(因为它有答案)。让这成为一座纪念碑。我正在尝试编写一个应用程序,给定一个对象和一个数组,从数组中删除该对象(如果存在),或将其添加到数组中(如果它不存在)。
初始数组:
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;
};
从plunkr可以看出,我试图在AngularJS应用程序中使用它,复选框作为触发器。某些权限由splice
返回(但权限数组未被更改),有些权限甚至没有返回。我在这里缺少什么?