一種の jQuery ライブ検索を実装したいと考えています。しかし、入力をサーバーに送信する前に、配列内の 3 文字以下のすべての項目を削除したいと思います (ドイツ語では、これらの単語は通常、検索の観点から無視できるため) ["this", "is", "a", "test"]
。["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);
});
});
今私の問題は、すべてのアイテムが for ループで削除されるわけではないということです。たとえば、「これはテストです」と入力すると、「is」が削除され、「a」が残ります。 JSFIDDLE
スプライスでアイテムを削除すると配列のインデックスが変更されるため、問題は for ループだと思います。そのため、「間違った」インデックスで続行します。
おそらく誰かが私を助けることができますか?