Javascript做模糊查詢-數組無雙(二)-完美的調用築造最後的成功

來源:互聯網
上載者:User
一、前言

上一章我們提到了高效能的迴圈,那麼那個函數到底在哪裡調用呢?它又代表什麼呢?現在讓我為大家解分析。當然這也是履行上次我的誠諾,因此必須認真點。好了,話不多說,把大腦運轉起來,我要開始講解了!!

上一章的網站地址:http://blog.csdn.net/yorhomwang/article/details/7855991

二、講解

首先看看上次解析代碼,畢竟溫故而知新:

var vData= ["name", "sex", "age", "job", "e-mail"];function find(sFind, sObj){var nSize = sFind.length;var nLen = sObj.length;var sCompare;if(nSize <= nLen ){for(var i = 0; i <= nLen - nSize + 1; i++){sCompare = sObj.substring(i, i + nSize);if(sCompare == sFind){return i;}}}return -1;}


上次我說過了,這裡運用比較好的就是迴圈,那麼沒有好的調用平台,即使迴圈再好也沒有用武之地,就像孔明到了袁紹那樣不聽勸告的君主手裡。所以我要把調用的函數好好講講,看下面的代碼:

function findEach(){var sFind = document.getElementById("input").value;if(sFind==""){alert("Can not be empty.");}if(sFind!=""){var nPos;var vResult = [];//for(var i = 0; i <= vData.length; i++){for(var i in vData){var sTxt=vData[i]||'';nPos = find(sFind, sTxt);//nPos=sTxt.indexOf(sFind);if(nPos>=0){vResult[vResult.length] = sTxt;}}alert(vResult);}}


這就是調用函數。看我一字一句的分析在下:

var sFind = document.getElementById("input").value;

這句誰都懂,就是取元素的值,也就是取要你找的那個字元的值。

在html中的對應代碼為:

<input id="input" type="text" value="" />


然後看js代碼中的代碼:

if(sFind==""){alert("Can not be empty.");}

這段是在講不允許要找的那個字元為空白字元。當然這都很簡單。再看代碼:

if(sFind!=""){var nPos;var vResult = [];//for(var i = 0; i <= vData.length; i++){for(var i in vData){var sTxt=vData[i]||'';nPos = find(sFind, sTxt);//nPos=sTxt.indexOf(sFind);if(nPos>=0){vResult[vResult.length] = sTxt;}}alert(vResult);}

這就在調用函數,當然要在調用前加個條件:要找的那個字元為空白字元不可為空字元,然後進行迴圈。在迴圈裡,我用了for(...in...)的語句,目的是為了遍曆數組。然後看下面的代碼:

var sTxt=vData[i]||'';

這是一句防禦性編程語句,因為要保證取回的一定是個字元或字串。(var = xxx || ' '代表如果前面不滿足就做||後面的。)然後調用前面的find()函數,並給參數賦值,參數sFind賦值為這裡定義的變數sFind(也就是要找的那個字元),參數sObj賦值為sTxt,也就是取數組vData(定義的全域變數,文章前面寫的代碼裡有。)中下標為i的值
。然後把調用的函數賦值給變數nPos。然後判斷nPos是否大於0,如果大於就以數組長度為下標取數組的值,並賦值給sTxt。

說明運行成功。那麼假設沒有找到,函數find()返回-1,就不滿足條件,於是就不運行後面代碼。

下一章我會公布全部代碼和自己的編程體會,敬請期待。

----------------------------------------------------------------

歡迎大家轉載我的文章。

轉載請註明:轉自Yorhom's Game Box

歡迎繼續關注我的部落格

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.