2017-07-28 164 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应用程序以及动画和效果。 –