2017-07-28 173 views
0

我有這樣一段代碼,用於比較名爲dictionary.txt的文本文檔創建的數組中名爲#notes的contenteditable div中的所有文本。如何從循環val創建數組?

它通過#notes所有分割文本循環調用splitCntEditableTxt並檢查它是否匹配。如果匹配,它將創建一個新的跨度,其中包含匹配的值。

現在,我想通過使用循環中的所有匹配的val來創建一個新的數組。那麼從循環創建該數組的任何想法?這是部分代碼。再次感謝〜!

$('#lattePool').load('dictionary.txt', function(){ 
    var text = $("#lattePool").text().toUpperCase(); 
    var words = text.split("\n"); 
    var dictionary = new Array(); 
    for(var i=0; i < words.length; i++) { 
     dictionary[i] = words[i]; 
    }; 

    var contentEditableTxt = $("#notes").text(); 
    var splitCntEditableTxt = contentEditableTxt.replace(/([.,-=/])/g," ").split(" "); 

    //alert(splitCntEditableTxt); //DEBUG 

    $.each(splitCntEditableTxt,function(key,val){ 
     var nameFound = $.inArray(val.trim().toUpperCase(), dictionary); 
     if (nameFound === -1){ 
     } else { 
      $("#notes").append('<span class="matchedWord">'+val+'</span>'); 
     } 
    }); 
}); 

回答

0
  1. 上述代碼
    var vals_array = [];
  2. 按下「VAL」每發現成陣列時間之前聲明一個空白陣列。更改else語句是這樣的:

    else { 
     
        $("#notes").append('<span class="matchedWord">'+val+'</span>'); 
     
        vals_array.push(val); 
     
    }

  3. PS:保存自己一些空間,改變if-else語句這樣:

    if (nameFound !== -1){ 
     
        $("#notes").append('<span class="matchedWord">'+val+'</span>'); 
     
        vals_array.push(val); 
     
    }

+0

哦,它奇妙地工作,感謝您的幫助〜非常感謝〜!順便說一句,如果我使用!==而不是!===,我可以跳過else語句? –

+0

'==='表示「等於」,'!=='表示「不等於」。 你可以說If(nameFound不等於-1)然後(做一些事情)而不是說If(nameFound等於-1)然後(什麼都不做)其他(做某事) – Aydin4ik

+0

我的錯誤,它是=== 。現在我再次感謝〜! –

0

初始化$.each之外的數組,然後在循環中追加到該數組。這是一個比任何事情都重要的問題。

如果你不知道如何去做我建議的事情,請告訴我,但如果你爲自己工作,你會學到更多。

+0

好,知道了。非常感謝您的建議,因爲我剛剛開始學習一些jQuery,因爲過去我只將它用於動態UI應用程序以及動畫和效果。 –