Heim  >  Artikel  >  Web-Frontend  >  js-Tutorial – Implementierung und Lösung von Array-Loop-Löschfehlern

js-Tutorial – Implementierung und Lösung von Array-Loop-Löschfehlern

php是最好的语言
php是最好的语言Original
2018-08-06 15:59:072348Durchsuche

Problembeschreibung

Eine einfache Anforderung besteht darin, Elemente zu löschen, die die Bedingungen im Array nicht erfüllen.

Falsche Implementierung

Die ursprüngliche Implementierung, foreachSchleife, 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.

Lösung

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn