亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用for循環中的拼接從數組中刪除項目

使用for循環中的拼接從數組中刪除項目

繁華開滿天機 2019-11-14 10:55:14
我想實現一種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循環中被刪除。例如,如果我刪除打字“這是一個測試”“是”,則“ a”保持不變。 JSFIDDLE我認為問題是for循環,因為如果我刪除帶有拼接的項,則數組的索引會更改,因此它會繼續使用“錯誤的”索引。也許有人可以幫助我嗎?
查看完整描述

3 回答

?
慕村225694

TA貢獻1880條經驗 獲得超4個贊

var myArr = [0,1,2,3,4,5,6];

問題陳述:


myArr.splice(2,1);


  \\ [0, 1, 3, 4, 5, 6];

現在3個動作在第二個位置移動,長度減少1個,從而造成問題。


解決方案:一個簡單的解決方案是在拼接時以相反的方向進行迭代。


var i = myArr.length;

while (i--) {

    // do your stuff

}


查看完整回答
反對 回復 2019-11-14
?
慕娘9325324

TA貢獻1783條經驗 獲得超4個贊

如果您安裝了lodash庫,則可能要考慮它們。


函數是_.forEachRight (從右到左迭代集合的元素)


這是一個例子。


var searchInput = ["this", "is", "a", "test"];


_.forEachRight(searchInput, function(value, key) {


    if (value.length < 4) {

        searchInput.splice(key, 1);

    }

});


查看完整回答
反對 回復 2019-11-14
  • 3 回答
  • 0 關注
  • 500 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號