编辑拼接不从阵列
能很好地去除元素,这确实是令人尴尬的。谢谢大家注意到错字,我会删除这个问题,但我不能(因为它有答案)。让这是一座纪念碑。我想写一个应用程序,给定一个对象和一个数组,如果它存在),或者将其添加到数组(如果它不存在),从数组中删除对象。
初始阵列:
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
(但权限数组没有被更改),有些甚至没有被返回。我在这里错过了什么?
如果您发布的答案对已发布的其他答案没有任何意义,只需删除重复的答案即可。 – ShadowRanger
如果你会阅读我发布的内容,那么你会意识到我添加了一个解释。由于我无法添加评论,我发布了另一个答案。 – Steven