編輯拼接不從陣列
能很好地去除元素,這確實是令人尷尬的。謝謝大家注意到錯字,我會刪除這個問題,但我不能(因爲它有答案)。讓這是一座紀念碑。我想寫一個應用程序,給定一個對象和一個數組,如果它存在),或者將其添加到數組(如果它不存在),從數組中刪除對象。
初始陣列:
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