精华内容
下载资源
问答
  • 移动端城市列表排序

    2021-06-01 20:01:22
    vercitylist.js是适用于移动端的一款城市列表排序js插件。
  • 插件描述:vercitylist.js是适用于移动端的一款城市列表排序js插件。更新时间:2020-04-05 20:42:03更新说明:版本更新verCity.js 2.0一、使用须知:verjsCity.js是适用于移动端的一款城市列表排序js插件。在原始...

    eeda07863e4430e1e773bb89dc4b4141.png

    c714816320c3c7678952c0af200e40b9.png

    插件描述:vercitylist.js是适用于移动端的一款城市列表排序js插件。

    更新时间:2020-04-05 20:42:03

    更新说明:版本更新verCity.js 2.0

    一、使用须知:

    verjsCity.js是适用于移动端的一款城市列表排序js插件。在原始文件中加入了中国所有的市级城市json数据

    二、使用方法

    实例select选框

    var city = new verCity();

    city.render({elem:"#city1",name:"city1"});

    document.getElementById("values").onclick = function () {

    var value1 = city.get_value("city1",true),

    value2 = city.get_value("city1");

    alert(

    'value1:'+JSON.stringify(value1)+"\n"

    +'value2:'+JSON.stringify(value2)+"\n"

    );

    }

    document.getElementById("letter").onclick = function () {

    var letter = city.get_letter("city1");

    alert(letter.join(","))

    }

    render方法相关参数说明参数名称参数类型缺省值参数说明

    elemstringnull实例化select对象,推荐使用id

    dataarray[]数据集合,如为空将会默认使用内部城市数据

    hot_cityarray["成都", "北京", "上海", "广州"]热门城市列表

    init_citystring成都默认城市,需要在data列表中存在

    keystringname显示字段值

    bindidstringcodevalue取值参数,当使用form表单时使用

    namestringnull表单对应字段

    get_value方法

    选中的城市参数 city.get_value("city",[true]);

    携带参数参数名称说明

    selectedselect选择框,在实例化时的elem值

    all参数显示的类型

    返回参数

    如实例化是name值不为空则返回json数据,name值为空则返回选择的值。

    get_letter方法

    获取城市字母列表

    携带参数参数名称说明示例

    selectedselect选择框,在实例化时的elem值city.get_value("search");

    返回参数

    返回字母数组集合

    更新时间:2019/4/23 下午2:51:56

    更新说明:修复苹果手机等部分机型无法点击定位的问题

    vercitylist.js 1.0.0

    一、使用须知:

    vercitylist.js是适用于移动端的一款城市列表排序js插件。在原始文件中加入了中国所有的市级城市json数据。

    二、方法介绍

    使用vercitylist.js只需在js中new一个既可以使用,如下面实例:

    new verCity({});

    三、相关参数说明

    1. data-city-hot:热门城市列表。

    2. data-city-default:默认城市。

    3. callbacks:选择城市后的回调函数。

    4. citys:城市数据。

    htmlhtml>

    城市列表

    版权信息

    > Copyright  2019 by [搬砖的小白](https://www.xincheng-blog.cn)

    > All rights reserved。

    展开全文
  • JS前端列表排序

    2012-06-08 11:53:23
    JS前端列表排序,封装好的组件,解放后台数据列表的排序。
  • vue实现城市列表排序(中文)

    千次阅读 2017-09-04 16:21:57
    在后台没有传城市字母标识时,可以使用以下方法对城市进行排序并实现右侧字母列表功能: {{ title }} {{letter}} {{city.name}} ↑ {{
    在后台没有传城市字母标识时,可以使用以下方法对城市进行排序并实现右侧字母列表功能,该源码复制可直接使用,由于为了方便,在此引入jq(需注意):
    
    <template>
      <div>
        <div class="header">{{ title }}</div>
        <div style="margin-top:46px;">
    		<div class="city" v-for="letter in letterSortList">
    		    <div class="city-title" :id="letter">{{letter}}</div>
    	        <div class="city-content">
    	          <ul class="city-list">
    	            <li class="city-item" v-for="city in letterCityList" v-if="city.capitalize === letter">{{city.name}}</li>
    	          </ul>
    	        </div>
    	    </div>
    	</div>
    	<div id="letter"></div>
        <div class="initials">
          <ul id="characterList">
            <li @click="moveScroll()">↑</li>
            <li v-for="character in letterSortList" @click="moveScroll(character)">{{ character }}</li>
          </ul>
        </div>
      </div>
    </template>
    
    <script>
    import $ from 'jquery';
    
    export default {
      data () {
        return{
          //这两个字段过长,如果看不到全部可以用该变量名自主去搜索
          strChineseFirstPY: "YDYQSXMWZSSXJBYMGCCZQPSSQBYCDSCDQLDYLYBSSJGYZZJJFKCCLZDHWDWZJLJPFYYNWJJTMYHZWZHFLZPPQHGSCYYYNJQYXXGJHHSDSJNKKTMOMLCRXYPSNQSECCQZGGLLYJLMYZZSECYKYYHQWJSSGGYXYZYJWWKDJHYCHMYXJTLXJYQBYXZLDWRDJRWYSRLDZJPCBZJJBRCFTLECZSTZFXXZHTRQHYBDLYCZSSYMMRFMYQZPWWJJYFCRWFDFZQPYDDWYXKYJAWJFFXYPSFTZYHHYZYSWCJYXSCLCXXWZZXNBGNNXBXLZSZSBSGPYSYZDHMDZBQBZCWDZZYYTZHBTSYYBZGNTNXQYWQSKBPHHLXGYBFMJEBJHHGQTJCYSXSTKZHLYCKGLYSMZXYALMELDCCXGZYRJXSDLTYZCQKCNNJWHJTZZCQLJSTSTBNXBTYXCEQXGKWJYFLZQLYHYXSPSFXLMPBYSXXXYDJCZYLLLSJXFHJXPJBTFFYABYXBHZZBJYZLWLCZGGBTSSMDTJZXPTHYQTGLJSCQFZKJZJQNLZWLSLHDZBWJNCJZYZSQQYCQYRZCJJWYBRTWPYFTWEXCSKDZCTBZHYZZYYJXZCFFZZMJYXXSDZZOTTBZLQWFCKSZSXFYRLNYJMBDTHJXSQQCCSBXYYTSYFBXDZTGBCNSLCYZZPSAZYZZSCJCSHZQYDXLBPJLLMQXTYDZXSQJTZPXLCGLQTZWJBHCTSYJSFXYEJJTLBGXSXJMYJQQPFZASYJNTYDJXKJCDJSZCBARTDCLYJQMWNQNCLLLKBYBZZSYHQQLTWLCCXTXLLZNTYLNEWYZYXCZXXGRKRMTCNDNJTSYYSSDQDGHSDBJGHRWRQLYBGLXHLGTGXBQJDZPYJSJYJCTMRNYMGRZJCZGJMZMGXMPRYXKJNYMSGMZJYMKMFXMLDTGFBHCJHKYLPFMDXLQJJSMTQGZSJLQDLDGJYCALCMZCSDJLLNXDJFFFFJCZFMZFFPFKHKGDPSXKTACJDHHZDDCRRCFQYJKQCCWJDXHWJLYLLZGCFCQDSMLZPBJJPLSBCJGGDCKKDEZSQCCKJGCGKDJTJDLZYCXKLQSCGJCLTFPCQCZGWPJDQYZJJBYJHSJDZWGFSJGZKQCCZLLPSPKJGQJHZZLJPLGJGJJTHJJYJZCZMLZLYQBGJWMLJKXZDZNJQSYZMLJLLJKYWXMKJLHSKJGBMCLYYMKXJQLBMLLKMDXXKWYXYSLMLPSJQQJQXYXFJTJDXMXXLLCXQBSYJBGWYMBGGBCYXPJYGPEPFGDJGBHBNSQJYZJKJKHXQFGQZKFHYGKHDKLLSDJQXPQYKYBNQSXQNSZSWHBSXWHXWBZZXDMNSJBSBKBBZKLYLXGWXDRWYQZMYWSJQLCJXXJXKJEQXSCYETLZHLYYYSDZPAQYZCMTLSHTZCFYZYXYLJSDCJQAGYSLCQLYYYSHMRQQKLDXZSCSSSYDYCJYSFSJBFRSSZQSBXXPXJYSDRCKGJLGDKZJZBDKTCSYQPYHSTCLDJDHMXMCGXYZHJDDTMHLTXZXYLYMOHYJCLTYFBQQXPFBDFHHTKSQHZYYWCNXXCRWHOWGYJLEGWDQCWGFJYCSNTMYTOLBYGWQWESJPWNMLRYDZSZTXYQPZGCWXHNGPYXSHMYQJXZTDPPBFYHZHTJYFDZWKGKZBLDNTSXHQEEGZZYLZMMZYJZGXZXKHKSTXNXXWYLYAPSTHXDWHZYMPXAGKYDXBHNHXKDPJNMYHYLPMGOCSLNZHKXXLPZZLBMLSFBHHGYGYYGGBHSCYAQTYWLXTZQCEZYDQDQMMHTKLLSZHLSJZWFYHQSWSCWLQAZYNYTLSXTHAZNKZZSZZLAXXZWWCTGQQTDDYZTCCHYQZFLXPSLZYGPZSZNGLNDQTBDLXGTCTAJDKYWNSYZLJHHZZCWNYYZYWMHYCHHYXHJKZWSXHZYXLYSKQYSPSLYZWMYPPKBYGLKZHTYXAXQSYSHXASMCHKDSCRSWJPWXSGZJLWWSCHSJHSQNHCSEGNDAQTBAALZZMSSTDQJCJKTSCJAXPLGGXHHGXXZCXPDMMHLDGTYBYSJMXHMRCPXXJZCKZXSHMLQXXTTHXWZFKHCCZDYTCJYXQHLXDHYPJQXYLSYYDZOZJNYXQEZYSQYAYXWYPDGXDDXSPPYZNDLTWRHXYDXZZJHTCXMCZLHPYYYYMHZLLHNXMYLLLMDCPPXHMXDKYCYRDLTXJCHHZZXZLCCLYLNZSHZJZZLNNRLWHYQSNJHXYNTTTKYJPYCHHYEGKCTTWLGQRLGGTGTYGYHPYHYLQYQGCWYQKPYYYTTTTLHYHLLTYTTSPLKYZXGZWGPYDSSZZDQXSKCQNMJJZZBXYQMJRTFFBTKHZKBXLJJKDXJTLBWFZPPTKQTZTGPDGNTPJYFALQMKGXBDCLZFHZCLLLLADPMXDJHLCCLGYHDZFGYDDGCYYFGYDXKSSEBDHYKDKDKHNAXXYBPBYYHXZQGAFFQYJXDMLJCSQZLLPCHBSXGJYNDYBYQSPZWJLZKSDDTACTBXZDYZYPJZQSJNKKTKNJDJGYYPGTLFYQKASDNTCYHBLWDZHBBYDWJRYGKZYHEYYFJMSDTYFZJJHGCXPLXHLDWXXJKYTCYKSSSMTWCTTQZLPBSZDZWZXGZAGYKTYWXLHLSPBCLLOQMMZSSLCMBJCSZZKYDCZJGQQDSMCYTZQQLWZQZXSSFPTTFQMDDZDSHDTDWFHTDYZJYQJQKYPBDJYYXTLJHDRQXXXHAYDHRJLKLYTWHLLRLLRCXYLBWSRSZZSYMKZZHHKYHXKSMDSYDYCJPBZBSQLFCXXXNXKXWYWSDZYQOGGQMMYHCDZTTFJYYBGSTTTYBYKJDHKYXBELHTYPJQNFXFDYKZHQKZBYJTZBXHFDXKDASWTAWAJLDYJSFHBLDNNTNQJTJNCHXFJSRFWHZFMDRYJYJWZPDJKZYJYMPCYZNYNXFBYTFYFWYGDBNZZZDNYTXZEMMQBSQEHXFZMBMFLZZSRXYMJGSXWZJSPRYDJSJGXHJJGLJJYNZZJXHGXKYMLPYYYCXYTWQZSWHWLYRJLPXSLSXMFSWWKLCTNXNYNPSJSZHDZEPTXMYYWXYYSYWLXJQZQXZDCLEEELMCPJPCLWBXSQHFWWTFFJTNQJHJQDXHWLBYZNFJLALKYYJLDXHHYCSTYYWNRJYXYWTRMDRQHWQCMFJDYZMHMYYXJWMYZQZXTLMRSPWWCHAQBXYGZYPXYYRRCLMPYMGKSJSZYSRMYJSNXTPLNBAPPYPYLXYYZKYNLDZYJZCZNNLMZHHARQMPGWQTZMXXMLLHGDZXYHXKYXYCJMFFYYHJFSBSSQLXXNDYCANNMTCJCYPRRNYTYQNYYMBMSXNDLYLYSLJRLXYSXQMLLYZLZJJJKYZZCSFBZXXMSTBJGNXYZHLXNMCWSCYZYFZLXBRNNNYLBNRTGZQYSATSWRYHYJZMZDHZGZDWYBSSCSKXSYHYTXXGCQGXZZSHYXJSCRHMKKBXCZJYJYMKQHZJFNBHMQHYSNJNZYBKNQMCLGQHWLZNZSWXKHLJHYYBQLBFCDSXDLDSPFZPSKJYZWZXZDDXJSMMEGJSCSSMGCLXXKYYYLNYPWWWGYDKZJGGGZGGSYCKNJWNJPCXBJJTQTJWDSSPJXZXNZXUMELPXFSXTLLXCLJXJJLJZXCTPSWXLYDHLYQRWHSYCSQYYBYAYWJJJQFWQCQQCJQGXALDBZZYJGKGXPLTZYFXJLTPADKYQHPMATLCPDCKBMTXYBHKLENXDLEEGQDYMSAWHZMLJTWYGXLYQZLJEEYYBQQFFNLYXRDSCTGJGXYYNKLLYQKCCTLHJLQMKKZGCYYGLLLJDZGYDHZWXPYSJBZKDZGYZZHYWYFQYTYZSZYEZZLYMHJJHTSMQWYZLKYYWZCSRKQYTLTDXWCTYJKLWSQZWBDCQYNCJSRSZJLKCDCDTLZZZACQQZZDDXYPLXZBQJYLZLLLQDDZQJYJYJZYXNYYYNYJXKXDAZWYRDLJYYYRJLXLLDYXJCYWYWNQCCLDDNYYYNYCKCZHXXCCLGZQJGKWPPCQQJYSBZZXYJSQPXJPZBSBDSFNSFPZXHDWZTDWPPTFLZZBZDMYYPQJRSDZSQZSQXBDGCPZSWDWCSQZGMDHZXMWWFYBPDGPHTMJTHZSMMBGZMBZJCFZWFZBBZMQCFMBDMCJXLGPNJBBXGYHYYJGPTZGZMQBQTCGYXJXLWZKYDPDYMGCFTPFXYZTZXDZXTGKMTYBBCLBJASKYTSSQYYMSZXFJEWLXLLSZBQJJJAKLYLXLYCCTSXMCWFKKKBSXLLLLJYXTYLTJYYTDPJHNHNNKBYQNFQYYZBYYESSESSGDYHFHWTCJBSDZZTFDMXHCNJZYMQWSRYJDZJQPDQBBSTJGGFBKJBXTGQHNGWJXJGDLLTHZHHYYYYYYSXWTYYYCCBDBPYPZYCCZYJPZYWCBDLFWZCWJDXXHYHLHWZZXJTCZLCDPXUJCZZZLYXJJTXPHFXWPYWXZPTDZZBDZCYHJHMLXBQXSBYLRDTGJRRCTTTHYTCZWMXFYTWWZCWJWXJYWCSKYBZSCCTZQNHXNWXXKHKFHTSWOCCJYBCMPZZYKBNNZPBZHHZDLSYDDYTYFJPXYNGFXBYQXCBHXCPSXTYZDMKYSNXSXLHKMZXLYHDHKWHXXSSKQYHHCJYXGLHZXCSNHEKDTGZXQYPKDHEXTYKCNYMYYYPKQYYYKXZLTHJQTBYQHXBMYHSQCKWWYLLHCYYLNNEQXQWMCFBDCCMLJGGXDQKTLXKGNQCDGZJWYJJLYHHQTTTNWCHMXCXWHWSZJYDJCCDBQCDGDNYXZTHCQRXCBHZTQCBXWGQWYYBXHMBYMYQTYEXMQKYAQYRGYZSLFYKKQHYSSQYSHJGJCNXKZYCXSBXYXHYYLSTYCXQTHYSMGSCPMMGCCCCCMTZTASMGQZJHKLOSQYLSWTMXSYQKDZLJQQYPLSYCZTCQQPBBQJZCLPKHQZYYXXDTDDTSJCXFFLLCHQXMJLWCJCXTSPYCXNDTJSHJWXDQQJSKXYAMYLSJHMLALYKXCYYDMNMDQMXMCZNNCYBZKKYFLMCHCMLHXRCJJHSYLNMTJZGZGYWJXSRXCWJGJQHQZDQJDCJJZKJKGDZQGJJYJYLXZXXCDQHHHEYTMHLFSBDJSYYSHFYSTCZQLPBDRFRZTZYKYWHSZYQKWDQZRKMSYNBCRXQBJYFAZPZZEDZCJYWBCJWHYJBQSZYWRYSZPTDKZPFPBNZTKLQYHBBZPNPPTYZZYBQNYDCPJMMCYCQMCYFZZDCMNLFPBPLNGQJTBTTNJZPZBBZNJKLJQYLNBZQHKSJZNGGQSZZKYXSHPZSNBCGZKDDZQANZHJKDRTLZLSWJLJZLYWTJNDJZJHXYAYNCBGTZCSSQMNJPJYTYSWXZFKWJQTKHTZPLBHSNJZSYZBWZZZZLSYLSBJHDWWQPSLMMFBJDWAQYZTCJTBNNWZXQXCDSLQGDSDPDZHJTQQPSWLYYJZLGYXYZLCTCBJTKTYCZJTQKBSJLGMGZDMCSGPYNJZYQYYKNXRPWSZXMTNCSZZYXYBYHYZAXYWQCJTLLCKJJTJHGDXDXYQYZZBYWDLWQCGLZGJGQRQZCZSSBCRPCSKYDZNXJSQGXSSJMYDNSTZTPBDLTKZWXQWQTZEXNQCZGWEZKSSBYBRTSSSLCCGBPSZQSZLCCGLLLZXHZQTHCZMQGYZQZNMCOCSZJMMZSQPJYGQLJYJPPLDXRGZYXCCSXHSHGTZNLZWZKJCXTCFCJXLBMQBCZZWPQDNHXLJCTHYZLGYLNLSZZPCXDSCQQHJQKSXZPBAJYEMSMJTZDXLCJYRYYNWJBNGZZTMJXLTBSLYRZPYLSSCNXPHLLHYLLQQZQLXYMRSYCXZLMMCZLTZSDWTJJLLNZGGQXPFSKYGYGHBFZPDKMWGHCXMSGDXJMCJZDYCABXJDLNBCDQYGSKYDQTXDJJYXMSZQAZDZFSLQXYJSJZYLBTXXWXQQZBJZUFBBLYLWDSLJHXJYZJWTDJCZFQZQZZDZSXZZQLZCDZFJHYSPYMPQZMLPPLFFXJJNZZYLSJEYQZFPFZKSYWJJJHRDJZZXTXXGLGHYDXCSKYSWMMZCWYBAZBJKSHFHJCXMHFQHYXXYZFTSJYZFXYXPZLCHMZMBXHZZSXYFYMNCWDABAZLXKTCSHHXKXJJZJSTHYGXSXYYHHHJWXKZXSSBZZWHHHCWTZZZPJXSNXQQJGZYZYWLLCWXZFXXYXYHXMKYYSWSQMNLNAYCYSPMJKHWCQHYLAJJMZXHMMCNZHBHXCLXTJPLTXYJHDYYLTTXFSZHYXXSJBJYAYRSMXYPLCKDUYHLXRLNLLSTYZYYQYGYHHSCCSMZCTZQXKYQFPYYRPFFLKQUNTSZLLZMWWTCQQYZWTLLMLMPWMBZSSTZRBPDDTLQJJBXZCSRZQQYGWCSXFWZLXCCRSZDZMCYGGDZQSGTJSWLJMYMMZYHFBJDGYXCCPSHXNZCSBSJYJGJMPPWAFFYFNXHYZXZYLREMZGZCYZSSZDLLJCSQFNXZKPTXZGXJJGFMYYYSNBTYLBNLHPFZDCYFBMGQRRSSSZXYSGTZRNYDZZCDGPJAFJFZKNZBLCZSZPSGCYCJSZLMLRSZBZZLDLSLLYSXSQZQLYXZLSKKBRXBRBZCYCXZZZEEYFGKLZLYYHGZSGZLFJHGTGWKRAAJYZKZQTSSHJJXDCYZUYJLZYRZDQQHGJZXSSZBYKJPBFRTJXLLFQWJHYLQTYMBLPZDXTZYGBDHZZRBGXHWNJTJXLKSCFSMWLSDQYSJTXKZSCFWJLBXFTZLLJZLLQBLSQMQQCGCZFPBPHZCZJLPYYGGDTGWDCFCZQYYYQYSSCLXZSKLZZZGFFCQNWGLHQYZJJCZLQZZYJPJZZBPDCCMHJGXDQDGDLZQMFGPSYTSDYFWWDJZJYSXYYCZCYHZWPBYKXRYLYBHKJKSFXTZJMMCKHLLTNYYMSYXYZPYJQYCSYCWMTJJKQYRHLLQXPSGTLYYCLJSCPXJYZFNMLRGJJTYZBXYZMSJYJHHFZQMSYXRSZCWTLRTQZSSTKXGQKGSPTGCZNJSJCQCXHMXGGZTQYDJKZDLBZSXJLHYQGGGTHQSZPYHJHHGYYGKGGCWJZZYLCZLXQSFTGZSLLLMLJSKCTBLLZZSZMMNYTPZSXQHJCJYQXYZXZQZCPSHKZZYSXCDFGMWQRLLQXRFZTLYSTCTMJCXJJXHJNXTNRZTZFQYHQGLLGCXSZSJDJLJCYDSJTLNYXHSZXCGJZYQPYLFHDJSBPCCZHJJJQZJQDYBSSLLCMYTTMQTBHJQNNYGKYRQYQMZGCJKPDCGMYZHQLLSLLCLMHOLZGDYYFZSLJCQZLYLZQJESHNYLLJXGJXLYSYYYXNBZLJSSZCQQCJYLLZLTJYLLZLLBNYLGQCHXYYXOXCXQKYJXXXYKLXSXXYQXCYKQXQCSGYXXYQXYGYTQOHXHXPYXXXULCYEYCHZZCBWQBBWJQZSCSZSSLZYLKDESJZWMYMCYTSDSXXSCJPQQSQYLYYZYCMDJDZYWCBTJSYDJKCYDDJLBDJJSODZYSYXQQYXDHHGQQYQHDYXWGMMMAJDYBBBPPBCMUUPLJZSMTXERXJMHQNUTPJDCBSSMSSSTKJTSSMMTRCPLZSZMLQDSDMJMQPNQDXCFYNBFSDQXYXHYAYKQYDDLQYYYSSZBYDSLNTFQTZQPZMCHDHCZCWFDXTMYQSPHQYYXSRGJCWTJTZZQMGWJJTJHTQJBBHWZPXXHYQFXXQYWYYHYSCDYDHHQMNMTMWCPBSZPPZZGLMZFOLLCFWHMMSJZTTDHZZYFFYTZZGZYSKYJXQYJZQBHMBZZLYGHGFMSHPZFZSNCLPBQSNJXZSLXXFPMTYJYGBXLLDLXPZJYZJYHHZCYWHJYLSJEXFSZZYWXKZJLUYDTMLYMQJPWXYHXSKTQJEZRPXXZHHMHWQPWQLYJJQJJZSZCPHJLCHHNXJLQWZJHBMZYXBDHHYPZLHLHLGFWLCHYYTLHJXCJMSCPXSTKPNHQXSRTYXXTESYJCTLSSLSTDLLLWWYHDHRJZSFGXTSYCZYNYHTDHWJSLHTZDQDJZXXQHGYLTZPHCSQFCLNJTCLZPFSTPDYNYLGMJLLYCQHYSSHCHYLHQYQTMZYPBYWRFQYKQSYSLZDQJMPXYYSSRHZJNYWTQDFZBWWTWWRXCWHGYHXMKMYYYQMSMZHNGCEPMLQQMTCWCTMMPXJPJJHFXYYZSXZHTYBMSTSYJTTQQQYYLHYNPYQZLCYZHZWSMYLKFJXLWGXYPJYTYSYXYMZCKTTWLKSMZSYLMPWLZWXWQZSSAQSYXYRHSSNTSRAPXCPWCMGDXHXZDZYFJHGZTTSBJHGYZSZYSMYCLLLXBTYXHBBZJKSSDMALXHYCFYGMQYPJYCQXJLLLJGSLZGQLYCJCCZOTYXMTMTTLLWTGPXYMZMKLPSZZZXHKQYSXCTYJZYHXSHYXZKXLZWPSQPYHJWPJPWXQQYLXSDHMRSLZZYZWTTCYXYSZZSHBSCCSTPLWSSCJCHNLCGCHSSPHYLHFHHXJSXYLLNYLSZDHZXYLSXLWZYKCLDYAXZCMDDYSPJTQJZLNWQPSSSWCTSTSZLBLNXSMNYYMJQBQHRZWTYYDCHQLXKPZWBGQYBKFCMZWPZLLYYLSZYDWHXPSBCMLJBSCGBHXLQHYRLJXYSWXWXZSLDFHLSLYNJLZYFLYJYCDRJLFSYZFSLLCQYQFGJYHYXZLYLMSTDJCYHBZLLNWLXXYGYYHSMGDHXXHHLZZJZXCZZZCYQZFNGWPYLCPKPYYPMCLQKDGXZGGWQBDXZZKZFBXXLZXJTPJPTTBYTSZZDWSLCHZHSLTYXHQLHYXXXYYZYSWTXZKHLXZXZPYHGCHKCFSYHUTJRLXFJXPTZTWHPLYXFCRHXSHXKYXXYHZQDXQWULHYHMJTBFLKHTXCWHJFWJCFPQRYQXCYYYQYGRPYWSGSUNGWCHKZDXYFLXXHJJBYZWTSXXNCYJJYMSWZJQRMHXZWFQSYLZJZGBHYNSLBGTTCSYBYXXWXYHXYYXNSQYXMQYWRGYQLXBBZLJSYLPSYTJZYHYZAWLRORJMKSCZJXXXYXCHDYXRYXXJDTSQFXLYLTSFFYXLMTYJMJUYYYXLTZCSXQZQHZXLYYXZHDNBRXXXJCTYHLBRLMBRLLAXKYLLLJLYXXLYCRYLCJTGJCMTLZLLCYZZPZPCYAWHJJFYBDYYZSMPCKZDQYQPBPCJPDCYZMDPBCYYDYCNNPLMTMLRMFMMGWYZBSJGYGSMZQQQZTXMKQWGXLLPJGZBQCDJJJFPKJKCXBLJMSWMDTQJXLDLPPBXCWRCQFBFQJCZAHZGMYKPHYYHZYKNDKZMBPJYXPXYHLFPNYYGXJDBKXNXHJMZJXSTRSTLDXSKZYSYBZXJLXYSLBZYSLHXJPFXPQNBYLLJQKYGZMCYZZYMCCSLCLHZFWFWYXZMWSXTYNXJHPYYMCYSPMHYSMYDYSHQYZCHMJJMZCAAGCFJBBHPLYZYLXXSDJGXDHKXXTXXNBHRMLYJSLTXMRHNLXQJXYZLLYSWQGDLBJHDCGJYQYCMHWFMJYBMBYJYJWYMDPWHXQLDYGPDFXXBCGJSPCKRSSYZJMSLBZZJFLJJJLGXZGYXYXLSZQYXBEXYXHGCXBPLDYHWETTWWCJMBTXCHXYQXLLXFLYXLLJLSSFWDPZSMYJCLMWYTCZPCHQEKCQBWLCQYDPLQPPQZQFJQDJHYMMCXTXDRMJWRHXCJZYLQXDYYNHYYHRSLSRSYWWZJYMTLTLLGTQCJZYABTCKZCJYCCQLJZQXALMZYHYWLWDXZXQDLLQSHGPJFJLJHJABCQZDJGTKHSSTCYJLPSWZLXZXRWGLDLZRLZXTGSLLLLZLYXXWGDZYGBDPHZPBRLWSXQBPFDWOFMWHLYPCBJCCLDMBZPBZZLCYQXLDOMZBLZWPDWYYGDSTTHCSQSCCRSSSYSLFYBFNTYJSZDFNDPDHDZZMBBLSLCMYFFGTJJQWFTMTPJWFNLBZCMMJTGBDZLQLPYFHYYMJYLSDCHDZJWJCCTLJCLDTLJJCPDDSQDSSZYBNDBJLGGJZXSXNLYCYBJXQYCBYLZCFZPPGKCXZDZFZTJJFJSJXZBNZYJQTTYJYHTYCZHYMDJXTTMPXSPLZCDWSLSHXYPZGTFMLCJTYCBPMGDKWYCYZCDSZZYHFLYCTYGWHKJYYLSJCXGYWJCBLLCSNDDBTZBSCLYZCZZSSQDLLMQYYHFSLQLLXFTYHABXGWNYWYYPLLSDLDLLBJCYXJZMLHLJDXYYQYTDLLLBUGBFDFBBQJZZMDPJHGCLGMJJPGAEHHBWCQXAXHHHZCHXYPHJAXHLPHJPGPZJQCQZGJJZZUZDMQYYBZZPHYHYBWHAZYJHYKFGDPFQSDLZMLJXKXGALXZDAGLMDGXMWZQYXXDXXPFDMMSSYMPFMDMMKXKSYZYSHDZKXSYSMMZZZMSYDNZZCZXFPLSTMZDNMXCKJMZTYYMZMZZMSXHHDCZJEMXXKLJSTLWLSQLYJZLLZJSSDPPMHNLZJCZYHMXXHGZCJMDHXTKGRMXFWMCGMWKDTKSXQMMMFZZYDKMSCLCMPCGMHSPXQPZDSSLCXKYXTWLWJYAHZJGZQMCSNXYYMMPMLKJXMHLMLQMXCTKZMJQYSZJSYSZHSYJZJCDAJZYBSDQJZGWZQQXFKDMSDJLFWEHKZQKJPEYPZYSZCDWYJFFMZZYLTTDZZEFMZLBNPPLPLPEPSZALLTYLKCKQZKGENQLWAGYXYDPXLHSXQQWQCQXQCLHYXXMLYCCWLYMQYSKGCHLCJNSZKPYZKCQZQLJPDMDZHLASXLBYDWQLWDNBQCRYDDZTJYBKBWSZDXDTNPJDTCTQDFXQQMGNXECLTTBKPWSLCTYQLPWYZZKLPYGZCQQPLLKCCYLPQMZCZQCLJSLQZDJXLDDHPZQDLJJXZQDXYZQKZLJCYQDYJPPYPQYKJYRMPCBYMCXKLLZLLFQPYLLLMBSGLCYSSLRSYSQTMXYXZQZFDZUYSYZTFFMZZSMZQHZSSCCMLYXWTPZGXZJGZGSJSGKDDHTQGGZLLBJDZLCBCHYXYZHZFYWXYZYMSDBZZYJGTSMTFXQYXQSTDGSLNXDLRYZZLRYYLXQHTXSRTZNGZXBNQQZFMYKMZJBZYMKBPNLYZPBLMCNQYZZZSJZHJCTZKHYZZJRDYZHNPXGLFZTLKGJTCTSSYLLGZRZBBQZZKLPKLCZYSSUYXBJFPNJZZXCDWXZYJXZZDJJKGGRSRJKMSMZJLSJYWQSKYHQJSXPJZZZLSNSHRNYPZTWCHKLPSRZLZXYJQXQKYSJYCZTLQZYBBYBWZPQDWWYZCYTJCJXCKCWDKKZXSGKDZXWWYYJQYYTCYTDLLXWKCZKKLCCLZCQQDZLQLCSFQCHQHSFSMQZZLNBJJZBSJHTSZDYSJQJPDLZCDCWJKJZZLPYCGMZWDJJBSJQZSYZYHHXJPBJYDSSXDZNCGLQMBTSFSBPDZDLZNFGFJGFSMPXJQLMBLGQCYYXBQKDJJQYRFKZTJDHCZKLBSDZCFJTPLLJGXHYXZCSSZZXSTJYGKGCKGYOQXJPLZPBPGTGYJZGHZQZZLBJLSQFZGKQQJZGYCZBZQTLDXRJXBSXXPZXHYZYCLWDXJJHXMFDZPFZHQHQMQGKSLYHTYCGFRZGNQXCLPDLBZCSCZQLLJBLHBZCYPZZPPDYMZZSGYHCKCPZJGSLJLNSCDSLDLXBMSTLDDFJMKDJDHZLZXLSZQPQPGJLLYBDSZGQLBZLSLKYYHZTTNTJYQTZZPSZQZTLLJTYYLLQLLQYZQLBDZLSLYYZYMDFSZSNHLXZNCZQZPBWSKRFBSYZMTHBLGJPMCZZLSTLXSHTCSYZLZBLFEQHLXFLCJLYLJQCBZLZJHHSSTBRMHXZHJZCLXFNBGXGTQJCZTMSFZKJMSSNXLJKBHSJXNTNLZDNTLMSJXGZJYJCZXYJYJWRWWQNZTNFJSZPZSHZJFYRDJSFSZJZBJFZQZZHZLXFYSBZQLZSGYFTZDCSZXZJBQMSZKJRHYJZCKMJKHCHGTXKXQGLXPXFXTRTYLXJXHDTSJXHJZJXZWZLCQSBTXWXGXTXXHXFTSDKFJHZYJFJXRZSDLLLTQSQQZQWZXSYQTWGWBZCGZLLYZBCLMQQTZHZXZXLJFRMYZFLXYSQXXJKXRMQDZDMMYYBSQBHGZMWFWXGMXLZPYYTGZYCCDXYZXYWGSYJYZNBHPZJSQSYXSXRTFYZGRHZTXSZZTHCBFCLSYXZLZQMZLMPLMXZJXSFLBYZMYQHXJSXRXSQZZZSSLYFRCZJRCRXHHZXQYDYHXSJJHZCXZBTYNSYSXJBQLPXZQPYMLXZKYXLXCJLCYSXXZZLXDLLLJJYHZXGYJWKJRWYHCPSGNRZLFZWFZZNSXGXFLZSXZZZBFCSYJDBRJKRDHHGXJLJJTGXJXXSTJTJXLYXQFCSGSWMSBCTLQZZWLZZKXJMLTMJYHSDDBXGZHDLBMYJFRZFSGCLYJBPMLYSMSXLSZJQQHJZFXGFQFQBPXZGYYQXGZTCQWYLTLGWSGWHRLFSFGZJMGMGBGTJFSYZZGZYZAFLSSPMLPFLCWBJZCLJJMZLPJJLYMQDMYYYFBGYGYZMLYZDXQYXRQQQHSYYYQXYLJTYXFSFSLLGNQCYHYCWFHCCCFXPYLYPLLZYXXXXXKQHHXSHJZCFZSCZJXCPZWHHHHHAPYLQALPQAFYHXDYLUKMZQGGGDDESRNNZLTZGCHYPPYSQJJHCLLJTOLNJPZLJLHYMHEYDYDSQYCDDHGZUNDZCLZYZLLZNTNYZGSLHSLPJJBDGWXPCDUTJCKLKCLWKLLCASSTKZZDNQNTTLYYZSSYSSZZRYLJQKCQDHHCRXRZYDGRGCWCGZQFFFPPJFZYNAKRGYWYQPQXXFKJTSZZXSWZDDFBBXTBGTZKZNPZZPZXZPJSZBMQHKCYXYLDKLJNYPKYGHGDZJXXEAHPNZKZTZCMXCXMMJXNKSZQNMNLWBWWXJKYHCPSTMCSQTZJYXTPCTPDTNNPGLLLZSJLSPBLPLQHDTNJNLYYRSZFFJFQWDPHZDWMRZCCLODAXNSSNYZRESTYJWJYJDBCFXNMWTTBYLWSTSZGYBLJPXGLBOCLHPCBJLTMXZLJYLZXCLTPNCLCKXTPZJSWCYXSFYSZDKNTLBYJCYJLLSTGQCBXRYZXBXKLYLHZLQZLNZCXWJZLJZJNCJHXMNZZGJZZXTZJXYCYYCXXJYYXJJXSSSJSTSSTTPPGQTCSXWZDCSYFPTFBFHFBBLZJCLZZDBXGCXLQPXKFZFLSYLTUWBMQJHSZBMDDBCYSCCLDXYCDDQLYJJWMQLLCSGLJJSYFPYYCCYLTJANTJJPWYCMMGQYYSXDXQMZHSZXPFTWWZQSWQRFKJLZJQQYFBRXJHHFWJJZYQAZMYFRHCYYBYQWLPEXCCZSTYRLTTDMQLYKMBBGMYYJPRKZNPBSXYXBHYZDJDNGHPMFSGMWFZMFQMMBCMZZCJJLCNUXYQLMLRYGQZCYXZLWJGCJCGGMCJNFYZZJHYCPRRCMTZQZXHFQGTJXCCJEAQCRJYHPLQLSZDJRBCQHQDYRHYLYXJSYMHZYDWLDFRYHBPYDTSSCNWBXGLPZMLZZTQSSCPJMXXYCSJYTYCGHYCJWYRXXLFEMWJNMKLLSWTXHYYYNCMMCWJDQDJZGLLJWJRKHPZGGFLCCSCZMCBLTBHBQJXQDSPDJZZGKGLFQYWBZYZJLTSTDHQHCTCBCHFLQMPWDSHYYTQWCNZZJTLBYMBPDYYYXSQKXWYYFLXXNCWCXYPMAELYKKJMZZZBRXYYQJFLJPFHHHYTZZXSGQQMHSPGDZQWBWPJHZJDYSCQWZKTXXSQLZYYMYSDZGRXCKKUJLWPYSYSCSYZLRMLQSYLJXBCXTLWDQZPCYCYKPPPNSXFYZJJRCEMHSZMSXLXGLRWGCSTLRSXBZGBZGZTCPLUJLSLYLYMTXMTZPALZXPXJTJWTCYYZLBLXBZLQMYLXPGHDSLSSDMXMBDZZSXWHAMLCZCPJMCNHJYSNSYGCHSKQMZZQDLLKABLWJXSFMOCDXJRRLYQZKJMYBYQLYHETFJZFRFKSRYXFJTWDSXXSYSQJYSLYXWJHSNLXYYXHBHAWHHJZXWMYLJCSSLKYDZTXBZSYFDXGXZJKHSXXYBSSXDPYNZWRPTQZCZENYGCXQFJYKJBZMLJCMQQXUOXSLYXXLYLLJDZBTYMHPFSTTQQWLHOKYBLZZALZXQLHZWRRQHLSTMYPYXJJXMQSJFNBXYXYJXXYQYLTHYLQYFMLKLJTMLLHSZWKZHLJMLHLJKLJSTLQXYLMBHHLNLZXQJHXCFXXLHYHJJGBYZZKBXSCQDJQDSUJZYYHZHHMGSXCSYMXFEBCQWWRBPYYJQTYZCYQYQQZYHMWFFHGZFRJFCDPXNTQYZPDYKHJLFRZXPPXZDBBGZQSTLGDGYLCQMLCHHMFYWLZYXKJLYPQHSYWMQQGQZMLZJNSQXJQSYJYCBEHSXFSZPXZWFLLBCYYJDYTDTHWZSFJMQQYJLMQXXLLDTTKHHYBFPWTYYSQQWNQWLGWDEBZWCMYGCULKJXTMXMYJSXHYBRWFYMWFRXYQMXYSZTZZTFYKMLDHQDXWYYNLCRYJBLPSXCXYWLSPRRJWXHQYPHTYDNXHHMMYWYTZCSQMTSSCCDALWZTCPQPYJLLQZYJSWXMZZMMYLMXCLMXCZMXMZSQTZPPQQBLPGXQZHFLJJHYTJSRXWZXSCCDLXTYJDCQJXSLQYCLZXLZZXMXQRJMHRHZJBHMFLJLMLCLQNLDXZLLLPYPSYJYSXCQQDCMQJZZXHNPNXZMEKMXHYKYQLXSXTXJYYHWDCWDZHQYYBGYBCYSCFGPSJNZDYZZJZXRZRQJJYMCANYRJTLDPPYZBSTJKXXZYPFDWFGZZRPYMTNGXZQBYXNBUFNQKRJQZMJEGRZGYCLKXZDSKKNSXKCLJSPJYYZLQQJYBZSSQLLLKJXTBKTYLCCDDBLSPPFYLGYDTZJYQGGKQTTFZXBDKTYYHYBBFYTYYBCLPDYTGDHRYRNJSPTCSNYJQHKLLLZSLYDXXWBCJQSPXBPJZJCJDZFFXXBRMLAZHCSNDLBJDSZBLPRZTSWSBXBCLLXXLZDJZSJPYLYXXYFTFFFBHJJXGBYXJPMMMPSSJZJMTLYZJXSWXTYLEDQPJMYGQZJGDJLQJWJQLLSJGJGYGMSCLJJXDTYGJQJQJCJZCJGDZZSXQGSJGGCXHQXSNQLZZBXHSGZXCXYLJXYXYYDFQQJHJFXDHCTXJYRXYSQTJXYEFYYSSYYJXNCYZXFXMSYSZXYYSCHSHXZZZGZZZGFJDLTYLNPZGYJYZYYQZPBXQBDZTZCZYXXYHHSQXSHDHGQHJHGYWSZTMZMLHYXGEBTYLZKQWYTJZRCLEKYSTDBCYKQQSAYXCJXWWGSBHJYZYDHCSJKQCXSWXFLTYNYZPZCCZJQTZWJQDZZZQZLJJXLSBHPYXXPSXSHHEZTXFPTLQYZZXHYTXNCFZYYHXGNXMYWXTZSJPTHHGYMXMXQZXTSBCZYJYXXTYYZYPCQLMMSZMJZZLLZXGXZAAJZYXJMZXWDXZSXZDZXLEYJJZQBHZWZZZQTZPSXZTDSXJJJZNYAZPHXYYSRNQDTHZHYYKYJHDZXZLSWCLYBZYECWCYCRYLCXNHZYDZYDYJDFRJJHTRSQTXYXJRJHOJYNXELXSFSFJZGHPZSXZSZDZCQZBYYKLSGSJHCZSHDGQGXYZGXCHXZJWYQWGYHKSSEQZZNDZFKWYSSTCLZSTSYMCDHJXXYWEYXCZAYDMPXMDSXYBSQMJMZJMTZQLPJYQZCGQHXJHHLXXHLHDLDJQCLDWBSXFZZYYSCHTYTYYBHECXHYKGJPXHHYZJFXHWHBDZFYZBCAPNPGNYDMSXHMMMMAMYNBYJTMPXYYMCTHJBZYFCGTYHWPHFTWZZEZSBZEGPFMTSKFTYCMHFLLHGPZJXZJGZJYXZSBBQSCZZLZCCSTPGXMJSFTCCZJZDJXCYBZLFCJSYZFGSZLYBCWZZBYZDZYPSWYJZXZBDSYUXLZZBZFYGCZXBZHZFTPBGZGEJBSTGKDMFHYZZJHZLLZZGJQZLSFDJSSCBZGPDLFZFZSZYZYZSYGCXSNXXCHCZXTZZLJFZGQSQYXZJQDCCZTQCDXZJYQJQCHXZTDLGSCXZSYQJQTZWLQDQZTQCHQQJZYEZZZPBWKDJFCJPZTYPQYQTTYNLMBDKTJZPQZQZZFPZSBNJLGYJDXJDZZKZGQKXDLPZJTCJDQBXDJQJSTCKNXBXZMSLYJCQMTJQWWCJQNJNLLLHJCWQTBZQYDZCZPZZDZYDDCYZZZCCJTTJFZDPRRTZTJDCQTQZDTJNPLZBCLLCTZSXKJZQZPZLBZRBTJDCXFCZDBCCJJLTQQPLDCGZDBBZJCQDCJWYNLLZYZCCDWLLXWZLXRXNTQQCZXKQLSGDFQTDDGLRLAJJTKUYMKQLLTZYTDYYCZGJWYXDXFRSKSTQTENQMRKQZHHQKDLDAZFKYPBGGPZREBZZYKZZSPEGJXGYKQZZZSLYSYYYZWFQZYLZZLZHWCHKYPQGNPGBLPLRRJYXCCSYYHSFZFYBZYYTGZXYLXCZWXXZJZBLFFLGSKHYJZEYJHLPLLLLCZGXDRZELRHGKLZZYHZLYQSZZJZQLJZFLNBHGWLCZCFJYSPYXZLZLXGCCPZBLLCYBBBBUBBCBPCRNNZCZYRBFSRLDCGQYYQXYGMQZWTZYTYJXYFWTEHZZJYWLCCNTZYJJZDEDPZDZTSYQJHDYMBJNYJZLXTSSTPHNDJXXBYXQTZQDDTJTDYYTGWSCSZQFLSHLGLBCZPHDLYZJYCKWTYTYLBNYTSDSYCCTYSZYYEBHEXHQDTWNYGYCLXTSZYSTQMYGZAZCCSZZDSLZCLZRQXYYELJSBYMXSXZTEMBBLLYYLLYTDQYSHYMRQWKFKBFXNXSBYCHXBWJYHTQBPBSBWDZYLKGZSKYHXQZJXHXJXGNLJKZLYYCDXLFYFGHLJGJYBXQLYBXQPQGZTZPLNCYPXDJYQYDYMRBESJYYHKXXSTMXRCZZYWXYQYBMCLLYZHQYZWQXDBXBZWZMSLPDMYSKFMZKLZCYQYCZLQXFZZYDQZPZYGYJYZMZXDZFYFYTTQTZHGSPCZMLCCYTZXJCYTJMKSLPZHYSNZLLYTPZCTZZCKTXDHXXTQCYFKSMQCCYYAZHTJPCYLZLYJBJXTPNYLJYYNRXSYLMMNXJSMYBCSYSYLZYLXJJQYLDZLPQBFZZBLFNDXQKCZFYWHGQMRDSXYCYTXNQQJZYYPFZXDYZFPRXEJDGYQBXRCNFYYQPGHYJDYZXGRHTKYLNWDZNTSMPKLBTHBPYSZBZTJZSZZJTYYXZPHSSZZBZCZPTQFZMYFLYPYBBJQXZMXXDJMTSYSKKBJZXHJCKLPSMKYJZCXTMLJYXRZZQSLXXQPYZXMKYXXXJCLJPRMYYGADYSKQLSNDHYZKQXZYZTCGHZTLMLWZYBWSYCTBHJHJFCWZTXWYTKZLXQSHLYJZJXTMPLPYCGLTBZZTLZJCYJGDTCLKLPLLQPJMZPAPXYZLKKTKDZCZZBNZDYDYQZJYJGMCTXLTGXSZLMLHBGLKFWNWZHDXUHLFMKYSLGXDTWWFRJEJZTZHYDXYKSHWFZCQSHKTMQQHTZHYMJDJSKHXZJZBZZXYMPAGQMSTPXLSKLZYNWRTSQLSZBPSPSGZWYHTLKSSSWHZZLYYTNXJGMJSZSUFWNLSOZTXGXLSAMMLBWLDSZYLAKQCQCTMYCFJBSLXCLZZCLXXKSBZQCLHJPSQPLSXXCKSLNHPSFQQYTXYJZLQLDXZQJZDYYDJNZPTUZDSKJFSLJHYLZSQZLBTXYDGTQFDBYAZXDZHZJNHHQBYKNXJJQCZMLLJZKSPLDYCLBBLXKLELXJLBQYCXJXGCNLCQPLZLZYJTZLJGYZDZPLTQCSXFDMNYCXGBTJDCZNBGBQYQJWGKFHTNPYQZQGBKPBBYZMTJDYTBLSQMPSXTBNPDXKLEMYYCJYNZCTLDYKZZXDDXHQSHDGMZSJYCCTAYRZLPYLTLKXSLZCGGEXCLFXLKJRTLQJAQZNCMBYDKKCXGLCZJZXJHPTDJJMZQYKQSECQZDSHHADMLZFMMZBGNTJNNLGBYJBRBTMLBYJDZXLCJLPLDLPCQDHLXZLYCBLCXZZJADJLNZMMSSSMYBHBSQKBHRSXXJMXSDZNZPXLGBRHWGGFCXGMSKLLTSJYYCQLTSKYWYYHYWXBXQYWPYWYKQLSQPTNTKHQCWDQKTWPXXHCPTHTWUMSSYHBWCRWXHJMKMZNGWTMLKFGHKJYLSYYCXWHYECLQHKQHTTQKHFZLDXQWYZYYDESBPKYRZPJFYYZJCEQDZZDLATZBBFJLLCXDLMJSSXEGYGSJQXCWBXSSZPDYZCXDNYXPPZYDLYJCZPLTXLSXYZYRXCYYYDYLWWNZSAHJSYQYHGYWWAXTJZDAXYSRLTDPSSYYFNEJDXYZHLXLLLZQZSJNYQYQQXYJGHZGZCYJCHZLYCDSHWSHJZYJXCLLNXZJJYYXNFXMWFPYLCYLLABWDDHWDXJMCXZTZPMLQZHSFHZYNZTLLDYWLSLXHYMMYLMBWWKYXYADTXYLLDJPYBPWUXJMWMLLSAFDLLYFLBHHHBQQLTZJCQJLDJTFFKMMMBYTHYGDCQRDDWRQJXNBYSNWZDBYYTBJHPYBYTTJXAAHGQDQTMYSTQXKBTZPKJLZRBEQQSSMJJBDJOTGTBXPGBKTLHQXJJJCTHXQDWJLWRFWQGWSHCKRYSWGFTGYGBXSDWDWRFHWYTJJXXXJYZYSLPYYYPAYXHYDQKXSHXYXGSKQHYWFDDDPPLCJLQQEEWXKSYYKDYPLTJTHKJLTCYYHHJTTPLTZZCDLTHQKZXQYSTEEYWYYZYXXYYSTTJKLLPZMCYHQGXYHSRMBXPLLNQYDQHXSXXWGDQBSHYLLPJJJTHYJKYPPTHYYKTYEZYENMDSHLCRPQFDGFXZPSFTLJXXJBSWYYSKSFLXLPPLBBBLBSFXFYZBSJSSYLPBBFFFFSSCJDSTZSXZRYYSYFFSYZYZBJTBCTSBSDHRTJJBYTCXYJEYLXCBNEBJDSYXYKGSJZBXBYTFZWGENYHHTHZHHXFWGCSTBGXKLSXYWMTMBYXJSTZSCDYQRCYTWXZFHMYMCXLZNSDJTTTXRYCFYJSBSDYERXJLJXBBDEYNJGHXGCKGSCYMBLXJMSZNSKGXFBNBPTHFJAAFXYXFPXMYPQDTZCXZZPXRSYWZDLYBBKTYQPQJPZYPZJZNJPZJLZZFYSBTTSLMPTZRTDXQSJEHBZYLZDHLJSQMLHTXTJECXSLZZSPKTLZKQQYFSYGYWPCPQFHQHYTQXZKRSGTTSQCZLPTXCDYYZXSQZSLXLZMYCPCQBZYXHBSXLZDLTCDXTYLZJYYZPZYZLTXJSJXHLPMYTXCQRBLZSSFJZZTNJYTXMYJHLHPPLCYXQJQQKZZSCPZKSWALQSBLCCZJSXGWWWYGYKTJBBZTDKHXHKGTGPBKQYSLPXPJCKBMLLXDZSTBKLGGQKQLSBKKTFXRMDKBFTPZFRTBBRFERQGXYJPZSSTLBZTPSZQZSJDHLJQLZBPMSMMSXLQQNHKNBLRDDNXXDHDDJCYYGYLXGZLXSYGMQQGKHBPMXYXLYTQWLWGCPBMQXCYZYDRJBHTDJYHQSHTMJSBYPLWHLZFFNYPMHXXHPLTBQPFBJWQDBYGPNZTPFZJGSDDTQSHZEAWZZYLLTYYBWJKXXGHLFKXDJTMSZSQYNZGGSWQSPHTLSSKMCLZXYSZQZXNCJDQGZDLFNYKLJCJLLZLMZZNHYDSSHTHZZLZZBBHQZWWYCRZHLYQQJBEYFXXXWHSRXWQHWPSLMSSKZTTYGYQQWRSLALHMJTQJSMXQBJJZJXZYZKXBYQXBJXSHZTSFJLXMXZXFGHKZSZGGYLCLSARJYHSLLLMZXELGLXYDJYTLFBHBPNLYZFBBHPTGJKWETZHKJJXZXXGLLJLSTGSHJJYQLQZFKCGNNDJSSZFDBCTWWSEQFHQJBSAQTGYPQLBXBMMYWXGSLZHGLZGQYFLZBYFZJFRYSFMBYZHQGFWZSYFYJJPHZBYYZFFWODGRLMFTWLBZGYCQXCDJYGZYYYYTYTYDWEGAZYHXJLZYYHLRMGRXXZCLHNELJJTJTPWJYBJJBXJJTJTEEKHWSLJPLPSFYZPQQBDLQJJTYYQLYZKDKSQJYYQZLDQTGJQYZJSUCMRYQTHTEJMFCTYHYPKMHYZWJDQFHYYXWSHCTXRLJHQXHCCYYYJLTKTTYTMXGTCJTZAYYOCZLYLBSZYWJYTSJYHBYSHFJLYGJXXTMZYYLTXXYPZLXYJZYZYYPNHMYMDYYLBLHLSYYQQLLNJJYMSOYQBZGDLYXYLCQYXTSZEGXHZGLHWBLJHEYXTWQMAKBPQCGYSHHEGQCMWYYWLJYJHYYZLLJJYLHZYHMGSLJLJXCJJYCLYCJPCPZJZJMMYLCQLNQLJQJSXYJMLSZLJQLYCMMHCFMMFPQQMFYLQMCFFQMMMMHMZNFHHJGTTHHKHSLNCHHYQDXTMMQDCYZYXYQMYQYLTDCYYYZAZZCYMZYDLZFFFMMYCQZWZZMABTBYZTDMNZZGGDFTYPCGQYTTSSFFWFDTZQSSYSTWXJHXYTSXXYLBYQHWWKXHZXWZNNZZJZJJQJCCCHYYXBZXZCYZTLLCQXYNJYCYYCYNZZQYYYEWYCZDCJYCCHYJLBTZYYCQWMPWPYMLGKDLDLGKQQBGYCHJXY",
          oMultiDiff: { "19969": "DZ", "19975": "WM", "19988": "QJ", "20048": "YL", "20056": "SC", "20060": "NM", "20094": "QG", "20127": "QJ", "20167": "QC", "20193": "YG", "20250": "KH", "20256": "ZC", "20282": "SC", "20285": "QJG", "20291": "TD", "20314": "YD", "20340": "NE", "20375": "TD", "20389": "YJ", "20391": "CZ", "20415": "PB", "20446": "YS", "20447": "SQ", "20504": "TC", "20608": "KG", "20854": "QJ", "20857": "ZC", "20911": "PF", "20504": "TC", "20608": "KG", "20854": "QJ", "20857": "ZC", "20911": "PF", "20985": "AW", "21032": "PB", "21048": "XQ", "21049": "SC", "21089": "YS", "21119": "JC", "21242": "SB", "21273": "SC", "21305": "YP", "21306": "QO", "21330": "ZC", "21333": "SDC", "21345": "QK", "21378": "CA", "21397": "SC", "21414": "XS", "21442": "SC", "21477": "JG", "21480": "TD", "21484": "ZS", "21494": "YX", "21505": "YX", "21512": "HG", "21523": "XH", "21537": "PB", "21542": "PF", "21549": "KH", "21571": "E", "21574": "DA", "21588": "TD", "21589": "O", "21618": "ZC", "21621": "KHA", "21632": "ZJ", "21654": "KG", "21679": "LKG", "21683": "KH", "21710": "A", "21719": "YH", "21734": "WOE", "21769": "A", "21780": "WN", "21804": "XH", "21834": "A", "21899": "ZD", "21903": "RN", "21908": "WO", "21939": "ZC", "21956": "SA", "21964": "YA", "21970": "TD", "22003": "A", "22031": "JG", "22040": "XS", "22060": "ZC", "22066": "ZC", "22079": "MH", "22129": "XJ", "22179": "XA", "22237": "NJ", "22244": "TD", "22280": "JQ", "22300": "YH", "22313": "XW", "22331": "YQ", "22343": "YJ", "22351": "PH", "22395": "DC", "22412": "TD", "22484": "PB", "22500": "PB", "22534": "ZD", "22549": "DH", "22561": "PB", "22612": "TD", "22771": "KQ", "22831": "HB", "22841": "JG", "22855": "QJ", "22865": "XQ", "23013": "ML", "23081": "WM", "23487": "SX", "23558": "QJ", "23561": "YW", "23586": "YW", "23614": "YW", "23615": "SN", "23631": "PB", "23646": "ZS", "23663": "ZT", "23673": "YG", "23762": "TD", "23769": "ZS", "23780": "QJ", "23884": "QK", "24055": "XH", "24113": "DC", "24162": "ZC", "24191": "GA", "24273": "QJ", "24324": "NL", "24377": "TD", "24378": "QJ", "24439": "PF", "24554": "ZS", "24683": "TD", "24694": "WE", "24733": "LK", "24925": "TN", "25094": "ZG", "25100": "XQ", "25103": "XH", "25153": "PB", "25170": "PB", "25179": "KG", "25203": "PB", "25240": "ZS", "25282": "FB", "25303": "NA", "25324": "KG", "25341": "ZY", "25373": "WZ", "25375": "XJ", "25384": "A", "25457": "A", "25528": "SD", "25530": "SC", "25552": "TD", "25774": "ZC", "25874": "ZC", "26044": "YW", "26080": "WM", "26292": "PB", "26333": "PB", "26355": "ZY", "26366": "CZ", "26397": "ZC", "26399": "QJ", "26415": "ZS", "26451": "SB", "26526": "ZC", "26552": "JG", "26561": "TD", "26588": "JG", "26597": "CZ", "26629": "ZS", "26638": "YL", "26646": "XQ", "26653": "KG", "26657": "XJ", "26727": "HG", "26894": "ZC", "26937": "ZS", "26946": "ZC", "26999": "KJ", "27099": "KJ", "27449": "YQ", "27481": "XS", "27542": "ZS", "27663": "ZS", "27748": "TS", "27784": "SC", "27788": "ZD", "27795": "TD", "27812": "O", "27850": "PB", "27852": "MB", "27895": "SL", "27898": "PL", "27973": "QJ", "27981": "KH", "27986": "HX", "27994": "XJ", "28044": "YC", "28065": "WG", "28177": "SM", "28267": "QJ", "28291": "KH", "28337": "ZQ", "28463": "TL", "28548": "DC", "28601": "TD", "28689": "PB", "28805": "JG", "28820": "QG", "28846": "PB", "28952": "TD", "28975": "ZC", "29100": "A", "29325": "QJ", "29575": "SL", "29602": "FB", "30010": "TD", "30044": "CX", "30058": "PF", "30091": "YSP", "30111": "YN", "30229": "XJ", "30427": "SC", "30465": "SX", "30631": "YQ", "30655": "QJ", "30684": "QJG", "30707": "SD", "30729": "XH", "30796": "LG", "30917": "PB", "31074": "NM", "31085": "JZ", "31109": "SC", "31181": "ZC", "31192": "MLB", "31293": "JQ", "31400": "YX", "31584": "YJ", "31896": "ZN", "31909": "ZY", "31995": "XJ", "32321": "PF", "32327": "ZY", "32418": "HG", "32420": "XQ", "32421": "HG", "32438": "LG", "32473": "GJ", "32488": "TD", "32521": "QJ", "32527": "PB", "32562": "ZSQ", "32564": "JZ", "32735": "ZD", "32793": "PB", "33071": "PF", "33098": "XL", "33100": "YA", "33152": "PB", "33261": "CX", "33324": "BP", "33333": "TD", "33406": "YA", "33426": "WM", "33432": "PB", "33445": "JG", "33486": "ZN", "33493": "TS", "33507": "QJ", "33540": "QJ", "33544": "ZC", "33564": "XQ", "33617": "YT", "33632": "QJ", "33636": "XH", "33637": "YX", "33694": "WG", "33705": "PF", "33728": "YW", "33882": "SR", "34067": "WM", "34074": "YW", "34121": "QJ", "34255": "ZC", "34259": "XL", "34425": "JH", "34430": "XH", "34485": "KH", "34503": "YS", "34532": "HG", "34552": "XS", "34558": "YE", "34593": "ZL", "34660": "YQ", "34892": "XH", "34928": "SC", "34999": "QJ", "35048": "PB", "35059": "SC", "35098": "ZC", "35203": "TQ", "35265": "JX", "35299": "JX", "35782": "SZ", "35828": "YS", "35830": "E", "35843": "TD", "35895": "YG", "35977": "MH", "36158": "JG", "36228": "QJ", "36426": "XQ", "36466": "DC", "36710": "JC", "36711": "ZYG", "36767": "PB", "36866": "SK", "36951": "YW", "37034": "YX", "37063": "XH", "37218": "ZC", "37325": "ZC", "38063": "PB", "38079": "TD", "38085": "QY", "38107": "DC", "38116": "TD", "38123": "YD", "38224": "HG", "38241": "XTC", "38271": "ZC", "38415": "YE", "38426": "KH", "38461": "YD", "38463": "AE", "38466": "PB", "38477": "XJ", "38518": "YT", "38551": "WK", "38585": "ZC", "38704": "XS", "38739": "LJ", "38761": "GJ", "38808": "SQ", "39048": "JG", "39049": "XJ", "39052": "HG", "39076": "CZ", "39271": "XT", "39534": "TD", "39552": "TD", "39584": "PB", "39647": "SB", "39730": "LG", "39748": "TPB", "40109": "ZQ", "40479": "ND", "40516": "HG", "40536": "HG", "40583": "QJ", "40765": "YQ", "40784": "QJ", "40840": "YK", "40863": "QJG" },
          title:'城市列表',
          letterSortList: '',
          letterCityList:'',
        }
      },
      // mixins: [zlMixins],
      mounted () {
        this.init();
      },
      methods: {
        init(){
          //举个栗子
          let dataList = [
            {
              "id": "000000000000000000hS",
              "name": "深圳市",
            },
            {
              "id": "000000000000000001PZ",
              "name": "唐山市",
            },
            {
              "id": "000000000000000001bS",
              "name": "承德市",
            },
            {
              "id": "000000000000000001oF",
              "name": "张家口市",
            },
            {
              "id": "0000000000000000020U",
              "name": "秦皇岛市",
            },
            {
              "id": "000000000000000002Ck",
              "name": "廊坊市",
            },
            {
              "id": "000000000000000002EU",
              "name": "天津市",
            },
            {
              "id": "000000000000000002IJ",
              "name": "沧州市",
            },
            {
              "id": "000000000000000002YZ",
              "name": "北京市",
            },
            {
              "id": "000000000000000002lZ",
              "name": "长沙市",
            },
            {
              "id": "000000000000000002r5",
              "name": "株洲市",
            },
            {
              "id": "000000000000000002wb",
              "name": "湘潭市",
            },
            {
              "id": "0000000000000000039A",
              "name": "浏阳市",
            },
            {
              "id": "000000000000000003Lq",
              "name": "岳阳市",
            },
            {
              "id": "000000000000000003Qi",
              "name": "益阳市",
            },
            {
              "id": "000000000000000003cC",
              "name": "常德市",
            },
            {
              "id": "000000000000000003ms",
              "name": "郴州市",
            },
            {
              "id": "000000000000000003yX",
              "name": "邵阳市",
            },
            {
              "id": "000000000000000004Cz",
              "name": "怀化市",
            },
            {
              "id": "000000000000000004Pl",
              "name": "娄底市",
            },
            {
              "id": "000000000000000004Ss",
              "name": "衡阳市",
            },
            {
              "id": "000000000000000004bb",
              "name": "永州市",
            },
            {
              "id": "000000000000000004uR",
              "name": "邯郸市",
            },
            {
              "id": "0000000000000000050B",
              "name": "武汉市",
            },
            {
              "id": "000000000000000005CF",
              "name": "成都市",
            },
            {
              "id": "000000000000000005Ic",
              "name": "重庆市",
            }
          ];
          this.letterCityList = dataList;
          let obj = {};
          let arr = [];
          const self = this;
          this.letterCityList.forEach(function(value,index,array){
          	//在每个城市加一个capitalize的标识代表首字母
            value.capitalize = self.makePy(value.name)[0].toUpperCase().substr(0,1);
            if(!obj[value.capitalize]){
              obj[value.capitalize] = true;
              arr.push(value.capitalize);
            }
          });
          //字母列表排序
          this.letterSortList = arr.sort();
        },
        //所选字母淡入淡出效果
        moveScroll(character){
          const LetterBox=$('#letter');
          const Initials=$('.initials');
          Initials.css('background','rgba(145,145,145,0.6)');
          if(self.timeOut){
            clearTimeout(self.timeOut);
          }
          self.timeOut = setTimeout(function(){
            Initials.css('background','rgba(145,145,145,0)');
            LetterBox.fadeOut();
          },1000);
          if(character==undefined){
            $('html,body').animate({scrollTop: '0px'}, 300);//点击第一个滚到顶部
          }else{
            if($('#'+character).length>0){
              LetterBox.html(character).fadeIn();
              const LetterTop = $('#'+character).position().top;
              $('html,body').animate({scrollTop: LetterTop-46+'px'}, 300);
            }
          }
        },
        makePy(str) {
          if (typeof (str) != "string")
            throw new Error(-1, "函数makePy需要字符串类型参数!");
          let arrResult = new Array(); //保存中间结果的数组  
          for (let i = 0, len = str.length; i < len; i++) {
            //获得unicode码  
            let ch = str.charAt(i);
            //检查该unicode码是否在处理范围之内,在则返回该码对映汉字的拼音首字母,不在则调用其它函数处理  
            arrResult.push(this.checkCh(ch));
          }
          //处理arrResult,返回所有可能的拼音首字母串数组  
          return this.mkRslt(arrResult);
        },
        checkCh(ch) {
          let uni = ch.charCodeAt(0);
          //如果不在汉字处理范围之内,返回原字符,也可以调用自己的处理函数  
          if (uni > 40869 || uni < 19968)
              return ch; //dealWithOthers(ch);  
          //检查是否是多音字,是按多音字处理,不是就直接在this.strChineseFirstPY字符串中找对应的首字母  
          return (this.oMultiDiff[uni] ? this.oMultiDiff[uni] : (this.strChineseFirstPY.charAt(uni - 19968)));
        },
        mkRslt(arr) {
          let arrRslt = [""];
          for (let i = 0, len = arr.length; i < len; i++) {
            let str = arr[i];
            let strlen = str.length;
            if (strlen == 1) {
              for (let k = 0; k < arrRslt.length; k++) {
                  arrRslt[k] += str;
              }
            } else {
              let tmpArr = arrRslt.slice(0);
              arrRslt = [];
              for (let k = 0; k < strlen; k++) {
                  //复制一个相同的arrRslt  
                  let tmp = tmpArr.slice(0);
                  //把当前字符str[k]添加到每个元素末尾  
                  for (let j = 0; j < tmp.length; j++) {
                      tmp[j] += str.charAt(k);
                  }
                  //把复制并修改后的数组连接到arrRslt上  
                  arrRslt = arrRslt.concat(tmp);
              }
            }
          }
          return arrRslt;
        }
      }
    }
    </script>
    <style>
    .header {
      width:100%;
      height:46px;
      position:fixed;
      background:#0099ff;
      color:white;
      text-align: center;
      line-height: 46px;
    }
    .city .city-title {
      font-size: 18px;
      font-weight: bold;
      padding: 5px 10px;
    }
    .city .city-content {
      background-color: #fff;
    }
    .city .city-list .city-item {
      padding: 5px 10px;
      border-bottom: 1px solid #eee;
      color: #333;
    }
    #letter{
      width: 100px;
      height: 100px;
      border-radius: 5px;
      font-size: 75px;
      color: #555;
      text-align: center;
      line-height: 100px;
      background: rgba(145,145,145,0.6);
      position: fixed;
      left: 50%;
      top: 50%;
      margin:-50px 0px 0px -50px;
      z-index: 99;
      display: none;
    }
    #characterList {
      position: absolute;
      top: 50%;
      transform: translateY(-50%);
    }
    .initials{
      position: fixed;
      top: 47px;
      right: 0px;
      height: 100%;
      width: 16px;
      text-align: center;
      font-size: 12px;
      z-index: 99;
      background: white !important;
    }
    .initials li img{
      width: 14px;
    }
    </style>

    展开全文
  • 全国主要城市列表, 包含市级以上城市, 按照字母排序, xml文件
  • jquery实现模拟字母顺序排序定位城市列表方法,供大家一起共同分享学习。
  • 主要为大家详细介绍了js实现列表按字母排序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • jquery模拟字母顺序排序定位城市列表方法
  • ionic通讯录联系人城市列表 首字母索引排序滑动 支持拼音
  • 实现城市列表排序及模糊查询

    千次阅读 2018-01-03 00:00:00
    城市列表的数据根据首字母安装ABCD的顺序进行排序,对于无法获取拼音的通过"#"进行标识 然后再进行二次分组,ABCD各位一大组,插入一个titleA,titleB,titleC,通过不同的type来在Recyclerview中进行type区分 这些...

    作者 | wustor

    地址 | https://www.jianshu.com/p/0ea45116f475

    声明 | 本文是 wustor 原创,已获授权发布,未经原作者允许请勿转载



    概述

    项目需求中有一个需求,是用户输入的地址进行智能匹配,包含拼音匹配跟文字匹配,下面先展示一下需要实现的效果

    其实看到这个需求,最开始的想法其实是很偷懒的,就是让服务端写一个接口,然后进行接口调用,不过在没网的时候就尴尬了,输入是没有提示的,所以这种方式其实不大好,再加上城市地址库一旦确定基本上就是不会轻易改变的,基于这几点考虑,打算做一个本地搜索。


    正文

    确定实现方式之后,其实思路就比较清晰了,首先请求一次接口的数据,然后直接放在本地,再加上项目的需求,所以基本的功能点如下:
    主要有以下2点:

    • 对接口返回的数据进行排序

    • 根据排序进行分组

    • 对用户的输入进行智能匹配


    排序的实现

    提到排序,其实首先会点到Java中的两个接口Comparable跟Comparator

    Comparable
    public interface Comparable<T> {
       public int compareTo(T o);
    }


    Comparable实际上就只是个接口,定义了一个compareTo方法,挺简单的,不过在使用的时候需要注意一下几点:


    两个元素排序:需要实现compareTo方法,并且有一个int返回值,表明返回的结果,具体比较的规则可以根据需求自己定义,可以实现相同类型的参数进行比较.


    多个元素排序:这里用地比较多的情况就是排序,JDK提供了一个工具类Arrays,调用Arrays.sort(Object[] a);只需要传入的数组实现了Comparable接口即可对传入的数组进行排序,这个时候我们注意到,Arrays.sort有很多重载方法,我们可以看一下



    有很多我们熟悉的基本类型,int,byte,char,这些貌似跟Comparable没有什么关系,不过由于Java是面向对象的,所以对于基本类型有一个装箱拆箱操作,当看到基本类型的时候,应该多跟他们的包装类联系起来,那就随便找几个,int的包装类Integer进行byte的包装类Byte


    public final class Integer extends Number implements Comparable<Integer>{
         public int compareTo(Integer anotherInteger) {
           return compare(this.value, anotherInteger.value);
       }
    }
    public final class Byte extends Number implements Comparable<Byte>{
         public int compareTo(Byte anotherByte) {
           return compare(this.value, anotherByte.value);
       }
    }
    public finalclass Character implements java.io.Serializable, Comparable<Character>{
        public int compareTo(Character anotherCharacter) {
           return compare(this.value, anotherCharacter.value);
       }
    }


    原来,他们的包装类都实现了Comparable接口,所以理清了,可以直接调用Arrays的sort方法对这些基本类型进行排序,当然,这里的排序都是基于包装类自身实现的排序算法,是固定不变的,如果是我们自定义的对象的话,需要重写compare方法。


    Comparator
    public interface Comparator<T> {
       int compare(T o1, T o2);
       boolean equals(Object obj);
    }


    Comparator的方法比Comparable要多地多,这里选择了compare跟equals两个方法,compare很好理解,用来比较两个对象,equals是用来比较两个comparator的,如果传入的对象也是一个Comparator并且他们的排序规则也是一样的,则equals方法返回true,否则返回false.


    1. 两个元素:直接传入对象,即可比较

    2. 多个元素:Collections提供了sort方法,传入一个list,跟一个comparator

    public static <T> void sort(List<T> list, Comparator<? super T> c) {
           if (list.getClass() == ArrayList.class) {
               Arrays.sort(((ArrayList) list).elementData, 0, list.size(), (Comparator) c);
               return;
           }
           Object[] a = list.toArray();
           Arrays.sort(a, (Comparator)c);
           ListIterator<T> i = list.listIterator();
           for (int j=0; j<a.length; j++) {
               i.next();
               i.set((T)a[j]);
           }
       }


    然后方法里面还是调用了Arrays.sort,毕竟集合也是数组,最终还是调用了数组的排序方法。


    对比分析

    Comparator是在类的外部进行排序,Comparable是在类的内部进行排序

    Comparator比较适合对于多个类进行排序,只需要实现一个Comparator就可以,Comparable则需要在每个类中实现Comparable接口


    开始排序

    排序通常的做法是对字母进行排序,但是接口返回的是文字,所以需要将文字转换成拼音,并且拿到首字母,才能进行排序,这里用到了一个第三方库TinyPinyin,适用于Java和Android的快速汉字转拼音库。


    以武汉为例


    1. 用tinypinyin将所有的城市名称转换成拼音,用3个字段分别保存W,WH,WUHAN,其中W用来进行排序分组,WH是用来进行简拼匹配,WUHAN是用来进行全拼匹配

    2. 将城市列表的数据根据首字母安装ABCD的顺序进行排序,对于无法获取拼音的通过"#"进行标识

    3. 然后再进行二次分组,ABCD各位一大组,插入一个titleA,titleB,titleC,通过不同的type来在Recyclerview中进行type区分


    这些其实没什么难度,下面贴一下Comparator的代码,自定义了compare方法,


    @Override
           public int compare(CityBean c1, CityBean c2)
    {
               if (c1.getPinyinFirst().equals("#")) {
                   return 1;
               } else if (c2.getPinyinFirst().equals("#")) {
                   return -1;
               }
               return c1.getPinyinFirst().compareTo(c2.getPinyinFirst());
           }
       }

    查找算法

    先定义一下查找规则

    1. 如果是汉字,则采用精准查找

    2. 如果是字母,当字母数量较小(3个以内)的时候,优先进行简拼,然后全拼,字母较多,使用全拼查找


    正则匹配查找算法


    public static void find(String inputStr, List<CityBean> old, List<CityBean> target) {
           if (RegexUtils.isEnglishAlphabet(inputStr)) {
               //拼音模糊匹配
               findByEN(inputStr, old, target);
           } else {
               //含有中文精准匹配
               findByCN(inputStr, old, target);
           }
       }


    中文匹配


    private static void findByCN(String inputStr, List<CityBean> mBodyDatas, List<CityBean> searchResult) {
           for (int i = 0; i < mBodyDatas.size(); i++) {
               CityBean cityBean = mBodyDatas.get(i);
               if (!TextUtils.isEmpty(cityBean.getRegionName()) && cityBean.getRegionName().contains(inputStr)) {
                   searchResult.add(cityBean);
               }
           }
       }


    字母匹配


    private static void findByEN(String inputStr, List<CityBean> mBodyDatas, List<CityBean> searchResult) {
           //把输入的内容变为大写
           String searPinyin = PinYinUtil.transformPinYin(inputStr);
           //搜索字符串的长度
           int searLength = searPinyin.length();
           //搜索的第一个大写字母
           for (int i = 0; i < mBodyDatas.size(); i++) {
               CityBean cityBean = mBodyDatas.get(i);
               //如果输入的每一个字母都和名字的首字母一样,那就可以匹配比如:武汉,WH
               if (cityBean.getMatchPin().contains(searPinyin)) {
                   searchResult.add(cityBean);
               } else {
                   boolean isMatch = false;
                   //先去匹配单个字,比如武汉WU,HAN.输入WU,肯定匹配第一个
                   for (int j = 0; j < cityBean.getNamePinyinList().size(); j++) {
                       String namePinyinPer = cityBean.getNamePinyinList().get(j);
                       if (!TextUtils.isEmpty(namePinyinPer) && namePinyinPer.startsWith(searPinyin)) {
                           //符合的话就是当前字匹配成功
                           searchResult.add(cityBean);
                           isMatch = true;
                           break;
                       }
                   }
                   if (isMatch) {
                       continue;
                   }
    //                根据拼音包含来实现,比如武汉:WUHAN,输入WUHA或者WUHAN。
                   if (!TextUtils.isEmpty(cityBean.getNamePinYin()) && cityBean.getNamePinYin().contains(searPinyin)) {
                       //这样的话就要从每个字的拼音开始匹配起
                       for (int j = 0; j < cityBean.getNamePinyinList().size(); j++) {
                           StringBuilder sbMatch = new StringBuilder();
                           for (int k = j; k < cityBean.getNamePinyinList().size(); k++) {
                               sbMatch.append(cityBean.getNamePinyinList().get(k));
                           }
                           if (sbMatch.toString().startsWith(searPinyin)) {
                               //匹配成功
                               int length = 0;
                               //比如输入是WUH,或者WUHA,或者WUHAN,这些都可以匹配上
                               for (int k = j; k < cityBean.getNamePinyinList().size(); k++) {
                                   length = length + cityBean.getNamePinyinList().get(k).length();
                                   if (length >= searLength) {
                                       break;
                                   }
                               }
                               //有可能重复匹配
                               if (!searchResult.contains(cityBean))
                                   searchResult.add(cityBean);
                           }
                       }
                   }
               }
           }
       }


    由于我是在内存中进行匹配查找的,这样虽然效率比较高,但是进行匹配的时候,过多地使用了for循环,整体的性能不是很好,后续会尝试着通过Sqlite进行查找,这样的话,效率可能会高一下,感兴趣的可以优化一下。


    源码下载

    https://github.com/wustor/Localsearchdemo


    与之相关

    2017 | 我在 5 个月时间里分享了 98 篇文章



    展开全文
  • 后台处理 a-z 拼音排序接口

    在手机上的联系人就使用到了a-z 过滤来快速定位要查找的内容在开发中我遇到的需求和这个差不多,实现城市的选择,但是我爬到的数据只有城市的名称,那我需要将其分成a-z部分返给前端。

    通过各种尝试,最后选择了使用pinyin这个第三方库,将汉字转成拼音,pinyin这个库支持将汉字转成每个字拼音首字母,再对已获得的拼音进行筛选,思路大致就是这样,接下来,看一下实现的效果




    接下来贴一下后端实现将城市名称转成相应拼音的代码:

    写了一个工具类 filterLetter.js

      /*第三方库*/
      var pinyin = require('pinyin');
      function pinyinClass() {
      }
      /*
         汉字转拼音
      */
      pinyinClass.prototype.transLetter =function(str) {
      let arr =[];
       pinyin(str,{
        style:pinyin.STYLE_FIRST_LETTER
      }).forEach(function (element) {
        arr = arr.concat(element);
      },this);
        return arr.join('');

    生成拼音接口:

     router.get('/pinyin',function (req,res,next) {
      Cities.find({},function (err,doc) {
        if (err){
          res.json({
            status:"1",
            msg:err.message,
            result:[]
          });
        }
        else {
          doc.forEach(item =>{
           0 /*
              生成拼音
            */
           var str = pinyinClass.prototype.transLetter(item.cityname);
            item.initial = str;
          });
          res.json({
            status:"",
            msg:"",
            result:doc
          })
        }

    将获取到的新的json文件内容,存如mongodb 数据库中,这样就让数据库中的城市数据数据有拼音首字母:

    json 数据如图所示:



    接下来写查询数据的接口

    实现筛选的方法:

      /*
        a-z 首字母筛选
      */
      var LetterObj={
      A:[],  B:[],  C:[],  D:[],  E:[],  F:[],  G:[],  H:[],  I:[],
      J:[],  K:[],  L:[],  M:[],  N:[],  O:[],  P:[],  Q:[],  R:[],
      S:[],  T:[],  U:[],  V:[],  W:[],  X:[],  Y:[],  Z:[]
      };
      pinyinClass.prototype.matchLetter = function (item) {
      //截取拼音首字母
      let str = item.initial.substring(0,1).toUpperCase();
      for (let key in LetterObj){
        if (str ===key){
          LetterObj[key].push(item);
        }
      }
       return LetterObj;
     }

    实现筛选的接口

    router.get('/all',function (req,res,next) {
      Cities.find({},function (err,doc) {
        if (err){
          res.json({
            status:"1",
            msg:err.message,
            result:[]
          })
        }else {
          // a-z过滤后数据
          let matchResult ={};
          doc.forEach(item =>{
            matchResult = pinyinClass.prototype.matchLetter(item);
          });
          res.json({
            status:"0",
            msg:"",
            result:matchResult
          })
        }
      })

    数据格式如下:



    实现按拼音分类的接口就大功告成了,小白一个,写的实现过程比较粗糙

    展开全文
  • 本文实例为大家分享了JS实现带导航城市列表以及输入搜索功能展示的具体代码,供大家参考,具体内容如下 实现功能: 1.加载城市列表,并生成索引(没有该索引的城市则无索引) 2.点击索引滚动页面到对应索引城市第一...
  • weex+js实现列表A-Z#排序展示

    千次阅读 2019-01-12 11:46:44
    1、方法一【城市列表定位热门的列表,现成组件参考wxcUI】: https://alibaba.github.io/weex-ui/#/cn/packages/wxc-indexlist/ 2、方法二【weex+js实现列表A-Z#排序展示(定位可以自己实现)】,上图看效果:...
  • 中国城市city.js。ABCD排序,包含城市ID,code等。使用地址示例:https://blog.csdn.net/qq_35713752/article/details/85258487
  • 本文实例为大家分享了Mint Ul实现A-Z字母排序城市选择列表的具体代码,供大家参考,具体内容如下 效果图如下: 项目文件存放路径图: pinying.js 和 city.json文件下载传送门 所有代码如下: <mt-cell...
  • js实现汉字中文排序的方法 例如:省市列表排序 原文地址: http://www.cnblogs.com/weblff/p/9051608.html#undefined localeCompare()   1.数组内的元素是中文字符串的简单排序 var arr = ['南京', '...
  • JS 列表筛选、排序

    2009-11-12 17:56:31
    排序 body{font-size:12px;margin:0;padding:0;} .clearfix{zoom:0;} .clearfix:after{content:'.';display:block;visibility:hidden;clear:both;height:0px;} #mysort{width:80%;float:le...
  • 那么我今天给大家介绍的是按首字母快速定位到城市列表,效果和通讯录一样的。  查看演示 下载源码 准备 查看演示 下载源码 准备 首先我们需要用到全国的城市数据,这些城市数据来源于网络,我已经将数据格式化成...
  • 1.加载城市列表,并生成索引(没有该索引的城市则无索引) 2.点击索引滚动页面到对应索引城市第一个位置 3.输入搜索 分析: 1.加载城市很容易,生成对应的索引。 首先需要得到所有的城市,然后拿出城市的首字母,...
  • Z字母排序城市选择列表的具体代码,供大家参考,具体内容如下效果图如下:项目文件存放路径图:所有代码如下:import city from "../assets/json/city"//导入所有城市的JSONimport { makePy } from "../assets/js/...
  • ionic 城市列表

    2016-11-18 19:47:46
    最近要做一个城市列表,网上找了很久都没找到合适的。所以决定自己动手写一个,整体写下来效果还行,可搜索,可锚点定位。不过项目经验较少,代码很撮,在这里也记录一下,方便以后优化。(不是很会总结,所以直接把...
  • import listData from '../assets/js/city.js' import wSortlist from 'wenlist' export default { name: 'wSortListDemoVue', components: { wSortlist }, data () { return { listData: list...
  • JavaScript算法实现排序

    2019-10-05 20:57:09
    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>IFE JavaScript Task 01</title> </head> <body> ...污染城市列表...
  • 城市列表(二)03-根据城市第二个汉字的首字母进行排序——数组排序的拓展用法-substr(0, 1)-字符串截取 & charAt(1)-字符串摘取 & charCodeAt(1)-字符的 Unicode 编码 实例 <!DOCTYPE html> <...
  • 全国省份及城市按字母排序列表 ```javascript cityList: [ { title: "A", name: [{ "ID": 1, "TopID": 0, "AddName": "安徽省", "hasCity": [{
  • JS实现表格排序

    2016-07-03 18:24:00
    今天有点闲,写个小东西,使用JS实现点击表格标题栏实现自动排序功能,嘻嘻... 一、JS代码,文件名为code.js如下: (function($){ //插件 $.extend($,{ //命名空间 sortTable:{ sort:function...
  • 对象数组:对象如下,包含name,cityid,tags { name: "北京市", tags: "BEIJING,北京市", cityid: 1 },
  • 城市列表返回的数据是这样的,没有按照字母顺序排序,但是现在页面展示肯定是要按照ABCDE的顺序来的,这时我们就要靠自己排序了。 function sortgroupcity(data){ //将获取的数据按照A-Z字母开头排序 let ...
  • 城市列表(六)04-城市长列表页展示-详细代码 实例 详细界面-src/views/City/index.js import React from 'react' import { NavBar, Icon, Toast } from 'antd-mobile' import axios from 'axios' import 'react-...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,972
精华内容 1,988
关键字:

js城市列表排序