Eine einfache Anforderung besteht darin, Elemente zu löschen, die die Bedingungen im Array nicht erfüllen.
Die ursprüngliche Implementierung, foreach
Schleife, wurde als falsch befunden.
// 如果学科存在id if (discipline.id) { // foreach类别 angular.forEach(result, function(value, key) { // 如果该类别有对应学科(考虑到“请选择的情况下”会报从undefined上获取id) // 并且该学科类别id不等于传入学科id if (value.discipline && !angular.equals(value.discipline.id, discipline.id)) { // 移除不符合要求的元素 result.splice(key, 1); } }); }
Jedes Mal, wenn es gelöscht wird, wird es basierend auf key
gelöscht. Nach dem Löschen ändert sich jedoch die Länge des Arrays. Daher wird es beim nächsten Mal, wenn ich es lösche, basierend auf key
. Ich finde, dass sich die Länge geändert hat. Die Position des Elements, das wir löschen möchten, hat sich ebenfalls geändert.
In Java
verwenden wir die Methode iterator
, um das Iterationsobjekt abzurufen und es dann zu ändern.
// 如果学科存在id if (discipline.id) { /** * 数组过滤 * 接收一个函数,根据该函数返回为true/false * 决定该元素保留还是删除 */ result = result.filter(function(value) { // 兼容请选择项,默认保留 if (!value.discipline) { return true; } // 保留器具类别的学科id与当前学科id相同的项 return angular.equals(value.discipline.id, discipline.id); }); }
Verwandte Artikel:
Probleme, die auftreten, wenn die for-Schleife den Inhalt von Array-Elementen in JavaScript löscht
A Frage zum Array-Schleifenproblem
Das obige ist der detaillierte Inhalt vonjs-Tutorial – Implementierung und Lösung von Array-Loop-Löschfehlern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!