Supprimer des éléments de tableau avec de jonction pour la boucle

Je veux mettre en œuvre une sorte de jQuery live search.
Mais avant d'envoyer les données d'entrée du serveur, je voudrais supprimer tous les éléments dans mon tableau qui ont 3 ou moins de personnages (parce que dans la langue allemande, ces mots peuvent généralement être ignorées en termes de recherche)
Donc ["this", "is", "a", "test"] devient ["this", "test"]

$(document).ready(function() {
var timer, searchInput;
$('#searchFAQ').keyup(function() {
    clearTimeout(timer);
    timer = setTimeout(function() {
        searchInput = $('#searchFAQ').val().match(/\w+/g);
        if(searchInput) {
            for (var elem in searchInput) {
                if (searchInput[elem].length < 4) {
                    //remove those entries
                    searchInput.splice(elem, 1);
                }
            }
            $('#output').text(searchInput);
            //ajax call here
        }
    }, 500);
});
});

Maintenant, mon problème est que pas tous les éléments sont supprimés dans ma boucle for.
Si j'ai par exemple typ "ceci est un test" "est" est supprimée, "une" reste.
JSFIDDLE

Je pense que le problème est pour la boucle parce que les indices de la matrice de changement si je supprime un élément avec l'épissure, donc, il va avec le "mauvais" index.

Peut-être quelqu'un pourrait m'aider?

  • Je ne vois pas pourquoi ce ne devrait pas être fait côté serveur. Rappelez-vous, il est toujours possible que JavaScript soit désactivé par l'utilisateur.
  • Vous avez raison, mais les deux façons devrait être possible. Serveur et côté client.
  • Quel est l'avantage de le faire côté client, si? Vous êtes seulement enlever une douzaine de caractères avant de les transférer à la chaîne de recherche, et que vous allez répéter la vérification côté serveur, de toute façon. Cela est valable uniquement si vous souhaitez retourner des erreurs de l'utilisateur avant de l'envoyer.
  • Eh bien, j'ai aussi pensé à cela, mais disons que c'est plus comme un exercice pour moi. En fait, il est plus intelligent de laisser le serveur faire le travail, mais j'ai commencé et je voulais une solution de travail 😉