Maison >interface Web >js tutoriel >js tutoriel - Implémentation et solution des erreurs de suppression de boucle de tableau

js tutoriel - Implémentation et solution des erreurs de suppression de boucle de tableau

php是最好的语言
php是最好的语言original
2018-08-06 15:59:072383parcourir

Description du problème

Une exigence simple consiste à supprimer les éléments qui ne remplissent pas les conditions dans le tableau.

Mauvaise implémentation

L'implémentation initiale, foreachboucle, s'est avérée erronée.

// 如果学科存在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);
        }
    });
}

Chaque fois que vous supprimez, il est supprimé selon key, mais après la suppression, la longueur du tableau changera, ce qui fait que la prochaine fois que vous supprimerez selon key, vous trouverez que la longueur a changé, la position de l'élément que nous voulons supprimer a également changé.

Solution

Dans Java, nous utilisons la méthode iterator pour obtenir son objet d'itération puis le modifier.

// 如果学科存在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);
    });
}

Articles associés :

Problèmes qui se produisent lorsque la boucle for supprime le contenu des éléments du tableau en JavaScript

A Questions sur les boucles de tableau

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn