zoukankan      html  css  js  c++  java
  • 翻页过程中不再重新匹配的方法

    改进之前的代码如下:

     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即进行翻页无需进行匹配。

  • 相关阅读:
    极速地将git项目部署到SAE的svn服务器上
    深入了解Javascript模块化编程
    自己实现的一款在线Javascript正则表达式测试器——JRE-Parser
    Javascript中的一种深复制实现
    如何循序渐进地学习Javascript
    handsontable实例----来源github
    HandsontableWithVue (一) 导入官方的汉化包
    Handsontable 入坑的开始
    开始前端的生活
    c3p0数据源的第一次尝试
  • 原文地址:https://www.cnblogs.com/cocos2014/p/4281028.html
Copyright © 2011-2022 走看看