一、前言
上一章我们提到了高性能的循环,那么那个函数到底在哪里调用呢?它又代表什么呢?现在让我为大家解分析。当然这也是履行上次我的诚诺,因此必须认真点。好了,话不多说,把大脑运转起来,我要开始讲解了!!
上一章的网站地址: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
欢迎继续关注我的博客
分享到:
相关推荐
玲珑轮胎-601966-成本、出口存好转预期,持续扩能筑造轮胎龙头.pdf
众望布艺-布艺龙头不负众望,筑造高端制造壁垒.pdf
传智教育-00303乘IT产业之风,研发驱动筑造优质口碑.rar
“中国芯”筑造者.docx
博西家电:以开放的心态筑造中国本土化的智能家居平台.pdf
煤矿井下在建造密闭混凝土墙时,传统工艺存在技术落后、工期长、效率低、原材料浪费等...以下详细介绍了利用煤矿用混凝土搅拌运输车和煤矿用输送泵提高建造密闭混凝土墙效率的新工艺,可为井下密闭筑造提供一种工艺参考。
计算机行业深度:工业软件与半导体双轮驱动,筑造万亿数字产业根基.pdf
工业软件与半导体双轮驱动,筑造万亿数字产业根基(2021)(57页).pdf
EDA行业系列报告(一):工业软件与半导体双轮驱动,筑造万亿数字产业根基.pdf
EDA行业系列报告(一):工业软件与半导体双轮驱动,筑造万亿数字产业根基.rar
计算机行业深度:工业软件与半导体双轮驱动,筑造万亿数字产业根基(2021)(57页).pdf
本教程以零基础自学为宗旨,用实例引导读者学习,深入浅出地介绍了3ds Max 2012的相关知识、操作技巧和应用实例。教初学者入门,教入门者进阶,教进阶者高级应用,介绍所有读者需要的3ds Max在建模、材质、灯光、...
湖南省龙山县皇仓中学高中语文优秀作文为自己筑造生命的航线素材
功能丰富的PDF阅读器,浏览及打印功能强大--浏览及打印任何PDF文档, 体积小巧,占用空间小,提供高效服务 有效的安全系统--筑造可信赖的安全壁垒
绿色智能装备,筑造美好城市 砂石骨料定量装车系统在实际应用中的系统设计与架构 砂石生产粉尘治理存在问题的原因及对策 市场在变化,供大于求,我们将如何应对? 无筛气动干法制砂楼 新形势下矿山企业发展新思路 新...
由此观之,只有打好扎实地根基,才能筑造出稳健地高楼。对于我们学习和实践技术,也是同一个理。 本文有序地归纳了java语言基础细节,一是作为学习上的总结,二是避免触犯同样地错误,三是希望与同道之人交流、...