jsキーワードの変色、配列の乱れ、配列の除去とパッケージ化

3626 ワード

1.はじめに
今日、自分の前にカプセル化した機能の一部を共有して現れました.全部いくつかのものがよく使われています.実現するのは簡単です.コードも少ない機能や操作です.キーワードの色や配列の乱れ、配列の重さなどです.
2.キーワードの変色
この機能はよく見られます.特に検索エンジンが検索を実行する時に.その他は多く言わないで、直接コードをつけます.




      
 

//      
function createExp(strArr)
{
  var str="";
  for(var i=0;i<strArr.length;i++)
  {
    if(i!=strArr.length-1)
    {
      str=str+strArr[i]+"|";
    }
    else
    {
      str=str+strArr[i];
    }
  }
  
  return "("+str+")";
}
//    ,          
function findKey(key,id)
{
  var arr=null;
  var regStr=null;
  var content=null;
  var Reg=null;
  var theObj=document.getElementById(id);
  arr=key.split(/\s+/);
  regStr=createExp(arr);
  //alert(regStr); //     :(  |  )
  content=theObj.innerHTML;
  //  html  
  content=content.replace(/<\/?[^>]*>/g,'');
  Reg=new RegExp(regStr,"g");
  //alert(Reg);//        / :(  |  )/g
  theObj.innerHTML=content.replace(Reg,"<span>$1</span>");
}
window.onload=function()
{
  var btn=document.getElementById("btn");
  btn.onclick=function(){
      var key=document.getElementById("text").value;
      findKey(key,"thediv");
  }
}

 
 
, , ( ), , , , , 。 。
運転してください
この効果が必要です.原理とプロセスを実現する:まず、ボタンをクリックしたときにテキストボックスのvalueを取得し、スペースで分割することによって配列(arr=key.split(/\s+/);)になり、次に配列をcreateExp()に伝え、正規の文字を作成します.最後に、[' ',' ']のコンテンツを正規化し、例えば、すべての「フロントエンド」をフロントエンドに置き換える.ここで注意すべき点は、正則マッチングを行う前に、必ず内容をフィルタリングします.次の運行に影響を与えないようにします.フィルタしないと、このバグです.
みんな見ましたよね.私は「来てください」だけを入力して、結果として「先端」も変色しました.これは私が「来てください」を入力した時、前に「先端」を入力して運転しました.次はクリアしないとこのバグがあります.クリアすれば大丈夫です.
2.シャッフル配列
配列を乱すのも、比較的によく使われていますよね.コードを入れます.
 function upsetOrder(arrOld,num){
        var result=[],_length=num||arrOld.length,arr;
        arr=Object.assign([],arrOld)
        for(var i=0,len=arr.length;i
運転してください
原理とプロセスを実現する:コアコードはcreateExp()であり、この原理は毎回( | )の中に( | )/gの要素があり、この要素は#thedivの中から自由に取得される.ここで注目すべき点は、result.push(arr.splice(Math.floor(Math.random()*arr.length),1)[0]);行のコードは、乱れの結果が元の配列に影響しないためである.例えば、伝来時の[1,2,3]は、元の配列を実行しましたか?それとも[1,2,3]ですか?新しいシャッフルの配列が生まれただけです.
3.配列の消去
配列は重くて、みんなが出会うのが多くなることを信じて、面接試験問題それともプロジェクトが必要なのに関わらず、多少いずれも出会ったことがあります.重い方法が多いです.主に二つの方法を話します.
第一種類
function removeReapt(arrOld){
    var arr=[];
    for(var i=0,len=arrOld.length;i
運転してください
この実現原理とプロセスは何も言いませんでした.元の配列resultを遍歴して、arrが現在遍歴している配列要素があるかどうかを判断して、追加されていません.
第二種
第一の方法は,表面的には層循環であるが,実際には二層であり,少なくとも運転速度では二層サイクルの速度である.pushこの方法も一つずつ比較しているからです.だからもう二番目の方法を話します.
function removeReapt(arrOld){
    var arr= [];
    var json = {};
    for(var i = 0,len = arrOld.length; i < len; i++){
        if(!json[arrOld[i]]){
            arr.push(arrOld[i]);
            json[arrOld[i]] = 1;
        }
    }
    return arr;
}
運転してください
効果はどうですか
原理と過程を実現します.元の配列を遍歴します.元の配列から元素を取り出して、対象の中にこの属性を訪問します.もし値にアクセスできるなら、重複して説明します.アクセスできないなら、arrはまだこの要素がないということです.これを追加して、jsonの属性として、1を割り当てます.この方法は、個人的には第一の方法より効率がいいと思います.
後続
jsについては実用的か常用の小機能操作ですが、今日はここに来て、後で他のものを書きます.