`
RushProgram
  • 浏览: 5619 次
  • 性别: Icon_minigender_1
  • 来自: 湖北省宜昌市
最近访客 更多访客>>
社区版块
存档分类
最新评论

Javascript做模糊查询 | 第二章 完美的调用筑造最后的成功。

阅读更多

前言

上一章我们提到了高性能的循环,那么那个函数到底在哪里调用呢?它又代表什么呢?现在让我为大家解分析。当然这也是履行上次我的诚诺,因此必须认真点。好了,话不多说,把大脑运转起来,我要开始讲解了!!

 

讲解

首先看看上次解析代码,毕竟温故而知新:

 

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;
}

上次我说过了,这里运用比较好的就是循环(具体分析请看上一章: 

 

Javascript做模糊查询 | 第一章 高性能循环带动整体效率。里面有具体的解释,看了上一章才能看懂这篇文章

),那么没有好的调用平台,即使循环再好也没有用武之地,就像孔明到了袁绍那样不听劝告的君主手里。所以我要把调用的函数好好讲讲,看下面的代码:

 

 

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,就不满足条件,于是就不运行后面代码。

(提示:只有看了上章才能看懂这章,否则你有可能不能理解。)

下一章我就会公布全部代码和自己的编程体会,敬请期待。

0
3
分享到:
评论

相关推荐

    完美版课件资料第五单元第二章第二节先天性行为和学习行为.ppt

    在“完美版课件资料第五单元第二章第二节先天性行为和学习行为.ppt”中,这些概念得到了全面而深入的探讨,为我们理解动物行为提供了独特的视角。 先天性行为,又称为本能行为,是动物在出生时就携带的一套行为指令...

    “中国芯”筑造者.docx

    “中国芯”筑造者.docx

    3ds Max 2012中文版完全自学视频教程下载第4章 筑造复杂的模型——复合三维对象.zip

    本教程以零基础自学为宗旨,用实例引导读者学习,深入浅出地介绍了3ds Max 2012的相关知识、操作...本教程共分为22章,包含了18小时以上视频录像和 50套3ds Max设计源文件,边看边练效果更好,让学习更轻松、更高效。

    传智教育-00303乘IT产业之风,研发驱动筑造优质口碑.rar

    标题“00303乘IT产业之风,研发驱动筑造优质口碑”揭示了传智教育在IT产业发展大潮中,凭借其强大的研发实力和对教学质量的坚守,赢得了良好的市场口碑。 在当前信息技术飞速发展的时代,IT产业持续推动着全球经济...

    煤矿井下密闭混凝土墙筑造新工艺

    煤矿井下在建造密闭混凝土墙时,传统工艺存在技术落后、工期长、效率低、原材料浪费等...以下详细介绍了利用煤矿用混凝土搅拌运输车和煤矿用输送泵提高建造密闭混凝土墙效率的新工艺,可为井下密闭筑造提供一种工艺参考。

    计算机行业深度:工业软件与半导体双轮驱动,筑造万亿数字产业根基.pdf

    在这一背景下,"计算机行业深度:工业软件与半导体双轮驱动,筑造万亿数字产业根基.pdf" 这份行业报告深入分析了工业软件和半导体两大驱动力如何共同构筑起数字产业的基础设施,并推动产业迈向万亿级别的规模。...

    EDA行业系列报告(一):工业软件与半导体双轮驱动,筑造万亿数字产业根基.rar

    据报告,这两个领域的协同作用有望筑造一个价值万亿的数字产业。这不仅意味着巨大的市场潜力,也预示着对创新和研发投入的持续增长,以及对人才需求的旺盛。 **挑战与机遇** 尽管EDA行业前景广阔,但也面临诸多...

    EDA行业系列报告(一):工业软件与半导体双轮驱动,筑造万亿数字产业根基.pdf

    【EDA行业系列报告(一):工业软件与半导体双轮驱动,筑造万亿数字产业根基】 本报告聚焦于EDA(电子设计自动化)行业,探讨了该行业在全球数字化进程中扮演的重要角色,以及它如何与半导体产业共同推动万亿数字...

    博西家电:以开放的心态筑造中国本土化的智能家居平台.pdf

    HomeConnect平台的升级体现了技术上的精进,不仅在产品功能、用户交互体验和个性化服务上有所增强,还在将家电管理向家务数字化服务方面做了延伸。这种技术上的支持不仅提升了用户体验,也反映了博西家电德式精工的...

    湖南省龙山县皇仓中学高中语文优秀作文为自己筑造生命的航线素材

    湖南省龙山县皇仓中学高中语文优秀作文为自己筑造生命的航线素材

    提高外立面混凝土装饰柱外观质量合格率QC-华南城五金机.pptx

    华南城筑造梦想QC小组正是意识到了这一点,在对现有混凝土装饰柱的外观质量问题进行深入分析后,提出了一套系统的解决方案,力求提升外观质量合格率,确保工程品质。本文将结合“提高外立面混凝土装饰柱外观质量合格...

    围涂工程中围涂堤前的水流变化研究

    围涂工程是针对沿海地区土地资源短缺的问题,通过在海滩或浅滩上筑造堤坝,使其成为陆地的工程活动。这项工程在改善土地资源紧张状况的同时,也会对周边的水流环境造成影响。本文以浙江省温州市洞头县的黄岙二期围涂...

    XXXX0801_海锦香槟小镇_项目定位及营销执行案.pptx

    海锦地产自成立以来,秉承“筑造美好生活”的理念,在房地产开发领域积累了丰富的经验。公司在惠州地区所开发的“香槟时间”和“海锦御林苑”等项目,以其优越的地理位置、精致的建筑设计和完善的社区配套,赢得了...

    优秀项目经理申报材料.doc

    在中建XX建工集团一建第四项管部,工程经理蔺治生以其卓越的专业技能和领导力,展现了优秀项目经理应有的品质。他积极参与并主导了多个重大工程项目,如北站国家粮食储藏库、XX天一大厦、XX电力学校学生公寓楼等,...

    培训师教材2.pptx

    第二天的课程着重在授课技巧的深入探讨和实践,以及课堂组织技巧的应用,如筑造学习环境,使学员能在轻松愉快的氛围中学习。 【培训导师的职责与任务】 培训导师的角色不仅是传授知识,更是创造学习条件,激发学员...

    优秀项目经理申报汇报材料.doc

    蔺治生先生就是这样的一个例子,他在中建某建工集团第四项管部担任工程经理,不仅在技术上有着深厚的功底,而且在管理上也展现出卓越的能力。 【项目管理经验与专业技能】 蔺治生先生自2001年以来,积累了丰富的...

    培训师的必备教材.pptx

    第二天的课程继续深化【授课技巧】,并增加了【课堂组织技巧】,包括如何有效地进行课堂管理,如何通过小组活动和录像回放促进学习。同时,培训师应具备【筑造学习殿堂】的能力,创造出一个鼓励学习、互动和成长的...

    预应力混凝土斜腿钢构桥有支架施工工法.doc

    首先,工法采用钢拱架和膺架作为支架,通过分段对称灌筑的方式,筑造梁体混凝土。这种方法的一大优势是不需要使用大型机械设备,因此在施工过程中安全性较高,且便于操作。其次,在混凝土灌筑之前,工法会预先加载以...

    房地产开发与品牌塑造概述.doc

    2. **质量与信誉筑造品牌** 产品的质量和信誉是品牌建设的基石。只有确保优良的质量和良好的信誉,企业才能赢得市场和消费者的信任。城开集团注重房屋的综合质量,包括工程、功能、环境和服务质量,始终坚持...

    《蟋蟀的住宅》教学课件1.ppt

    第二句话突出了蟋蟀使用极其简单的工具与它们复杂的劳动成果之间的强烈对比,让我们对它们的创造力感到惊奇;最后一句话更是将蟋蟀的住所冠以“伟大的工程”,这一称谓无疑是对蟋蟀勤劳和智慧的最高赞扬。 通过学习...

Global site tag (gtag.js) - Google Analytics