`
RushProgram
  • 浏览: 5589 次
  • 性别: 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
分享到:
评论

相关推荐

    “中国芯”筑造者.docx

    “中国芯”筑造者.docx

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

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

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

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

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

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

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

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

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

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

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

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

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

    报告指出,计算机行业的两大驱动力——工业软件和半导体在数字化进程中发挥着至关重要的作用,共同构筑了万亿级别的数字产业基础。工业软件,特别是电子设计自动化(EDA)工具,是集成电路产业的重要组成部分,对于...

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

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

    大学生励志追梦文章,追求梦想永不停歇.docx

    5. 科学梦想:第二篇故事的主角梦想成为一名科学家,热爱探索和实验,对科学有着浓厚的兴趣。他以牛顿的名言激励自己,表示会坚持自己的理想,为国家贡献自己的力量。 6. 家庭期望与责任:主人公的父母期望他能成功...

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

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

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

    这篇文档详细介绍了蔺治生,一位在中建新疆建工集团一建第四项管部工作的优秀项目经理,他的工作经历、专业成就以及管理理念。 【个人经历与专业能力】 蔺治生自2001年起,先后参与了多项重大工程项目,从技能员到...

    培训师教材2.pptx

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

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

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

    培训师的必备教材.pptx

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

    专题资料(2021-2022年)2第二册:流程管理类工程部行动手册.doc

    通过这份行动手册,员工不仅可以了解自己的职责和工作要求,还能理解整个工程部的运作框架,从而更好地协同工作,实现公司的绿色节能和生态筑造目标。这体现了公司在管理和运营上的系统化和专业化,有助于提升工作...

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

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

    质量自控体系(最终版).docx

    本文以中铁四局二公司省道301线根拉一级公路02合同段经理部为例,详细阐述了其质量保证体系的构建和实施。 首先,质量保证体系的设立基于“追求卓越管理,筑造精品工程”的质量方针,以及遵循ISO9000质量保证体系,...

    华为解决方案经理总结.docx

    #### 一、客户关系的筑造和维护者 在华为的企业文化中,“以客户为中心”被视为企业发展的基石。作为解决方案经理,其角色不仅限于技术方案的设计与实施,更是公司与客户之间桥梁的重要组成部分。通过与客户的密切...

Global site tag (gtag.js) - Google Analytics