翻页过程中不再重新匹配的方法

改进之前的代码如下:

 1 function HandleInput(answer,pageindex)
 2 {
 3         var plateArray = new Array();
 4         var convertReverseArray = new Array();
 5         var strRegEx = convertInput(answer);
 6         var regEx = new RegExp(strRegEx);
 7         regEx.compile(regEx);
 8
 9         searchPlateBegin = new Date();
10
11         for (var i = 0;i < keyArrayConvert.length;i++)
12         {
13             if (regEx.test(keyArrayConvert[i]))
14             {
15                 convertReverseArray.push(keyArray[i]);
16                 plateArray.push(keyArrayConvert[i]);
17             }
18         }
19
20         matchPlateLength  = plateArray.length;
21 }

在这里每进行一次翻页,传进来一个车牌号answer 都会重新进入一次for循环,假如keyArrayConvert很大,就会耗时相当长,由于项目中翻页的功能每次传进来的车牌号都是一样的,这里指的是在模糊查询车牌的时候例如苏A*,所以说没必要翻页时每次都进行一次正则表达式匹配。采用的改进方法如下:

 1 if(fuzzy_flag == 0)
 2                 {
 3                // var plateArray = new Array();
 4                // var convertReverseArray = new Array();
 5                 var strRegEx = convertInput(answer);
 6                 var regEx = new RegExp(strRegEx);
 7                 regEx.compile(regEx);
 8
 9                 searchPlateBegin = new Date();
10
11                 for (var i = 0;i < keyArrayConvert.length;i++)
12                 {
13                     if (regEx.test(keyArrayConvert[i]))
14                     {
15                         convertReverseArray.push(keyArray[i]);
16                         plateArray.push(keyArrayConvert[i]);
17                     }
18                 }
19
20                 matchPlateLength  = plateArray.length;
21                 }

此段代码的位置在HandleInput函数中,fuzzy_flag的位置在路由的入口处,代码如下:

 1     if(req.param("ajax") == null){
 2     if(fuzzy_search == req.param("plate"))
 3     {
 4         fuzzy_flag=1;
 5     }
 6     else
 7     {
 8         plateArray = [];
 9         convertReverseArray = [];
10     }
11     fuzzy_search = req.param("plate");
12     console.log("The fuzzy_flag is:",fuzzy_flag);
13     console.log("The fuzzy_search is:",fuzzy_search);
14    // }
15     }

这里通过fuzzy_search进行一次转接,fuzzy_search,plateArray,convertReverseArray的定义位置如下,在整段代码的入口处:

 1 var express = require(‘express‘);
 2 var iconv = require(‘iconv-lite‘);
 3 var fs = require(‘fs‘);
 4 var encodingConvert     = require(‘encoding‘);
 5 var buf                 = require(‘buffer‘);
 6
 7 var router = express.Router();
 8 var plateArray = new String();
 9 var convertReverseArray = new String();
10 var originalUrl = new String();
11 var fuzzy_search = new String();

因为目的是翻页过程中不再进行匹配,那么plateArray,convertReverseArray的一次匹配的结果要一直用下去,就要把其定义为全局变量,重新取空的时间是输入另一个车牌号时即上端代码中的else语句,改进前由于是每次都进行一次匹配,所以要定义成局部变量。

fuzzy_search作为一次转接用来判定下次输入的车牌和本次的是否相同,若相同把fuzzy_search赋值1,若不相同,fuzzy_search为原值0不变,如果为0说明是新的车牌要重新进行匹配,如果为1即进行翻页无需进行匹配。

时间: 2024-11-03 21:40:10

翻页过程中不再重新匹配的方法的相关文章

翻页过程中保存查询条件

例如:我的查询条件是 1 <table> 2 <tr> 3 <td> 4 <input type="text" name="goodsNo"/>- 7 </td> 8 <td> 9 <input type="text" name="goodsName"/> 12 </td> 13 <td><input type=&

CUDA程序编译过程中产生警告的解决方法

有时候经常使用别人用Tabhost+其它的实现demo.单纯利用Tabhost该如何使用呢? 下面看例子: public class MainActivity extends TabActivity { public TabHost tabHost; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 获取对象 tabHost = getTabH

安装过程中出现PKG_CONFIG_PATH的问题解决方法

在安装开源软件的过程中, 经常会碰到提示配置PKG_CONFIG_PATH路径, 或者直接提示没有安装某某库, 但是我们已经安装了啊. 其实造成这种情况的原因很简单, 就是安装的目录不能被依赖程序找到. 具体的原理可以网上搜索 configure, pkg-config , PKG_CONFIG_PATH这三者直接的关系.此处不再赘述. 解决方法就是让依赖库能找到我们的安装目录即可. 下面我们来举个例子: 比如我们安装 A 这个库, 执行 ./configure的时候提示要先安装 B 这个库.

linux 环境下安装oracle11g方法及安装过程中遇上的问题解决方法

 Oralce安装教程 1.先安装需要的依赖包 找到哪个没有安装,直接yum install XX,直到所有的都安装完成.注意,可能一个包安装了,再次执行检查,还是提示没有安装,那么就不需要管他们了,继续安装下面的. rpm -q binutils compat-libstdc++ elfutils-libelf elfutils-libelf-devel elfutils-libelf-devel-static gcc gcc-c++ glibc glibc-common glibc-deve

Eclipse 使用过程中的问题及解决方法

1.Eclipse中java文件和jsp字体大小设置 1.更改所有文件的字体显示大小过程: Window->preferences->General->Appearance->Colors   and   Fonts->Basic->TextFont->右边按钮Change 2.Eclipse-Eclispe导入正确工程后出现xml等文件报错 问题描述:用Eclipse IDE导入一个正确的项目工程,一些xml配置文件和jsp页面报错 导致原因:因为我们写的这些文

Linux下安装Memcache以及安装过程中一些问题的解决方法

一.下载安装libevent cd /tmp #切换到tmp目录 wget http://www.monkey.org/~provos/libevent-1.2.tar.gz #下载 tar zxvf libevent-1.2.tar.gz #解压 cd libevent-1.2 #切换到libevent目录 ./configure --prefix=/usr #配置安装路径 #如果此步骤报错,检查一下有没有安装编译器,没有的话运行以下命令进行安装 yum install gcc make #编

yii2 安装过程中的问题及解决方法

一.php版本要求5.4+,如果使用wamp组合包,建议更换 二.各种模块的支持,一般只要修改php.ini文件,去掉相应模块前的注释即可. 注意,Intl extension模块的支持需要将    php安装目录/bin下的icu*.dll 拷贝至apache安装目录/bin下. PDO PostgreSQL extension模块的支持需要同时开启extension=php_pdo_pgsql.dll      extension=php_pgsql.dll APC 模块由于我的php难奔较

nodejs备忘总结(一) -- node和express安装与配置,新建简单项目(附安装配置过程中遇到问题的解决方法)

安装node 本文以安装node_v8.9.0为例(win10环境),下载node-v8.9.0-x64.msi插件 下载后,安装,安装目录默认为C:\Program Files\nodejs 配置环境变量,系统变量->path,添加“C:\Program Files\nodejs\” 运行cmd,输入node -v C:\Windows\system32>node -v v8.9.0 安装express 找到node安装目录C:\Program Files\nodejs,命令行运行 C:\P

c#翻页效果

用c#和GDI+实现杂志翻页动画效果时间:2010-01-13 blog.csdn.net 周公 - 说明:以前本人参与个一个电子杂志项目,当时要求实现模拟现实生活中的杂志翻页动画效果,别人推荐了这篇文章,最后达到了我想要的效果,今天尝试把这篇文章翻译了一下.希望对英语水平不太好的同行有帮助.如果你的英语水平足够好,我推荐你阅读英文原文,网址是:http://www.codeproject.com/KB/GDI-plus/TurnThePage.aspx,同时希望大家原谅本人的翻译水平. 介绍