城市搜索之Arkts实现 原创

X叶域Q
发布于 2024-12-11 19:56
浏览
1收藏

在当今数字化时代,城市搜索功能在众多应用场景中都有着极为重要的地位,无论是旅游出行规划、本地生活服务查询,还是地理信息系统相关的应用开发,高效且精准的城市搜索都能极大地提升用户体验。

一、搜索展示

城市搜索之Arkts实现-鸿蒙开发者社区 城市搜索之Arkts实现-鸿蒙开发者社区 城市搜索之Arkts实现-鸿蒙开发者社区
默认全部显示 拼音搜索 文字搜索

二、城市数据准备

首先,我们需要获取城市数据。城市数据可以来源于多种渠道,例如公开的地理信息数据库、政府统计资料或者第三方数据平台。

如果不注重严格正确的使用也可以找AI,例如:

export const cityData = ["北京", "天津", "上海", "重庆", "石家庄", "唐山", "秦皇岛", "邯郸", "邢台", "保定", "张家口", "承德", "沧州", "廊坊", "衡水", "辛集", "晋州", "新乐", "遵化", "迁安", "武安", "南宫", "沙河", "涿州", "定州", "安国", "高碑店", "平泉", "泊头", "任丘", "黄骅", "河间", "霸州", "三河", "深州", "太原", "大同", "阳泉", "长治", "晋城", "朔州", "晋中", "运城", "忻州", "临汾", "吕梁", "古交", "高平", "介休", "永济", "河津", "原平", "侯马", "霍州", "孝义", "汾阳", "怀仁", "呼和浩特", "包头", "乌海", "赤峰", "通辽", "鄂尔多斯", "呼伦贝尔", "巴彦淖尔", "乌兰察布", "霍林郭勒", "满洲里", "牙克石", "扎兰屯", "额尔古纳", "根河", "丰镇", "乌兰浩特", "阿尔山", "二连浩特", "锡林浩特", "沈阳", "大连", "鞍山", "抚顺", "本溪", "丹东", "锦州", "营口", "阜新", "辽阳", "盘锦", "铁岭", "朝阳", "葫芦岛", "新民", "瓦房店", "庄河", "海城", "东港", "凤城", "凌海", "北镇", "盖州", "大石桥", "灯塔", "调兵山", "开原", "北票", "凌源", "兴城", "长春", "吉林", "四平", "辽源", "通化", "白山", "松原", "白城", "榆树", "德惠", "蛟河", "桦甸", "舒兰", "磐石", "公主岭", "双辽", "梅河口", "集安", "洮南", "大安", "临江", "延吉", "图们", "敦化", "珲春", "龙井", "和龙", "扶余", "哈尔滨", "齐齐哈尔", "黑河", "大庆", "伊春", "鹤岗", "佳木斯", "双鸭山", "七台河", "鸡西", "牡丹江", "绥化", "尚志", "五常", "讷河", "北安", "五大连池", "嫩江", "铁力", "同江", "富锦", "虎林", "密山", "绥芬河", "海林", "宁安", "安达", "肇东", "海伦", "穆棱", "东宁", "抚远", "漠河", "南京", "徐州", "连云港", "宿迁", "淮安", "盐城", "扬州", "泰州", "南通", "镇江", "常州", "无锡", "苏州", "常熟", "张家港", "太仓", "昆山", "江阴", "宜兴", "溧阳", "扬中", "句容", "丹阳", "如皋", "启东", "海安", "高邮", "仪征", "兴化", "泰兴", "靖江", "东台", "邳州", "新沂", "杭州", "宁波", "湖州", "嘉兴", "舟山", "绍兴", "衢州", "金华", "台州", "温州", "丽水", "建德", "慈溪", "余姚", "平湖", "海宁", "桐乡", "诸暨", "嵊州", "江山", "兰溪", "永康", "义乌", "东阳", "临海", "温岭", "瑞安", "乐清", "龙港", "龙泉", "玉环", "合肥", "芜湖", "蚌埠", "淮南", "马鞍山", "淮北", "铜陵", "安庆", "黄山", "滁州", "阜阳", "宿州", "六安", "亳州", "池州", "宣城", "巢湖", "桐城", "天长", "明光", "界首", "宁国", "广德", "潜山", "无为", "厦门", "福州", "南平", "三明", "莆田", "泉州", "漳州", "龙岩", "宁德", "福清", "邵武", "武夷山", "建瓯", "永安", "石狮", "晋江", "南安", "龙海", "漳平", "福安", "福鼎", "南昌", "九江", "景德镇", "鹰潭", "新余", "萍乡", "赣州", "上饶", "抚州", "宜春", "吉安", "瑞昌", "共青城", "庐山", "乐平", "瑞金", "德兴", "丰城", "樟树", "高安", "井冈山", "贵溪", "济南", "青岛", "聊城", "德州", "东营", "淄博", "潍坊", "烟台", "威海", "日照", "临沂", "枣庄", "济宁", "泰安", "滨州", "菏泽", "胶州", "平度", "莱西", "临清", "乐陵", "禹城", "安丘", "昌邑", "高密", "青州", "诸城", "寿光", "栖霞", "海阳", "龙口", "莱阳", "莱州", "蓬莱", "招远", "荣成", "乳山", "滕州", "曲阜", "邹城", "新泰", "肥城", "邹平", "郑州", "开封", "洛阳", "平顶山", "安阳", "鹤壁", "新乡", "焦作", "濮阳", "许昌", "漯河", "三门峡", "南阳", "商丘", "周口", "驻马店", "信阳", "荥阳", "新郑", "登封", "新密", "偃师", "孟州", "沁阳", "卫辉", "辉县", "长垣", "林州", "禹州", "长葛", "舞钢", "义马", "灵宝", "项城", "巩义", "邓州", "永城", "汝州", "济源", "武汉", "十堰", "襄阳", "荆门", "孝感", "黄冈", "鄂州", "黄石", "咸宁", "荆州", "宜昌", "随州", "丹江口", "老河口", "枣阳", "宜城", "钟祥", "京山", "汉川", "应城", "安陆", "广水", "麻城", "武穴", "大冶", "赤壁", "石首", "洪湖", "松滋", "宜都", "枝江", "当阳", "恩施", "利川", "仙桃", "天门", "潜江", "长沙", "衡阳", "张家界", "常德", "益阳", "岳阳", "株洲", "湘潭", "郴州", "永州", "邵阳", "怀化", "娄底", "耒阳", "常宁", "浏阳", "津", "沅江", "汨罗", "临湘", "醴陵", "湘乡", "韶山", "资兴", "武冈", "邵东", "洪江", "冷水江", "涟源", "吉首", "宁乡", "广州", "深圳", "清远", "韶关", "河源", "梅州", "潮州", "汕头", "揭阳", "汕尾", "惠州", "东莞", "珠海", "中山 ", "江门", "佛山", "肇庆", "云浮", "阳江", "茂名", "湛江", "英德", "连州", "乐昌", "南雄", "兴宁", "普宁", "陆丰", "恩平", "台山", "开平", "鹤山", "四会", "罗定", "阳春", "化州", "信宜", "高州", "吴川", "廉江", "雷州", "南宁", "贺州", "玉林", "桂林", "柳州", "梧州", "北海", "钦州", "百色", "防城港", "贵港", "河池", "崇左", "来宾", "东兴", "桂平", "北流", "岑溪", "合山", "凭祥", "宜州", "海口", "三亚", "万宁", "文昌", "儋州", "琼海", "东方", "五指山", "成都", "广安", "德阳", "乐山", "巴中", "内江", "宜宾", "南充", "自贡", "泸州", "广元", "达州", "资阳", "绵阳", "眉山", "遂宁", "雅安", "都江堰", "阆中", "攀枝花", "广汉", "绵竹", "万源", "华蓥", "江油", "西昌", "彭州", "简阳", "崇州", "什邡", "峨眉山", "邛崃", "双流县", "贵阳", "安顺", "遵义", "六盘水", "兴义", "都匀", "凯里", "毕节", "铜仁", "清镇", "赤水", "仁怀", "福泉", "昆明", "玉溪", "大理", "曲靖", "昭通", "保山", "丽江", "临沧", "楚雄", "开远", "个旧", "景洪", "安宁", "宣威", "拉萨", "日喀则", "西安", "咸阳", "榆林", "宝鸡", "铜川", "渭南", "汉中", "安康", "商洛", "韩城", "兴平", "华阴", "兰州", "白银", "武威", "金昌", "平凉", "张掖", "嘉峪关", "酒泉", "庆阳", "定西", "陇南", "天水", "玉门", "临夏", "合作", "敦煌", "甘南州", "西宁", "格尔木", "德令哈", "银川", "固原", "石嘴山", "青铜峡", "中卫", "吴忠", "灵武", "乌鲁木齐", "石河子", "喀什", "阿勒泰", "阜康", "库尔勒", "阿克苏", "阿拉尔", "哈密", "克拉玛依", "昌吉", "奎屯", "米泉", "和田", "台北", "新北", "桃园", "台中", "台南", "高雄", "基隆", "嘉义", "新竹"]

拼音搜索需要文字相应的拼音,以下为Arkts Map格式

export const pinyinMap: Map<string, string> = new Map([["北", "bei"],["京", "jing"],["上", "shang"],["海", "hai"],["天", "tian"],["津", "jin"],["重", "chong"],["庆", "qing"],["广", "guang"],["州", "zhou"],["深", "shen"],["圳", "zhen"],["杭", "hang"],["州", "zhou"],["成", "cheng"],["都", "du"],["石", "shi"],["家", "jia"],["庄", "zhuang"],["唐", "tang"],["山", "shan"],["秦", "qin"],["皇", "huang"],["岛", "dao"],["邯", "han"],["郸", "dan"],["邢", "xing"],["台", "tai"],["保", "bao"],["定", "ding"],["张", "zhang"],["家", "jia"],["口", "kou"],["承", "cheng"],["德", "de"],["沧", "cang"],["州", "zhou"],["廊", "lang"],["坊", "fang"],["衡", "heng"],["水", "shui"],["太", "tai"],["原", "yuan"],["大", "da"],["同", "tong"],["阳", "yang"],["泉", "quan"],["长", "chang"],["治", "zhi"],["晋", "jin"],["城", "cheng"],["朔", "shuo"],["忻", "xin"],["州", "zhou"],["吕", "lv"],["梁", "liang"],["呼", "hu"],["和", "he"],["浩", "hao"],["特", "te"],["包", "bao"],["头", "tou"],["乌", "wu"],["海", "hai"],["赤", "chi"],["峰", "feng"],["通", "tong"],["辽", "liao"],["鄂", "e"],["多", "duo"],["斯", "si"],["呼伦", "hulun"],["贝尔", "beier"],["巴", "ba"],["彦", "yan"],["淖", "nao"],["尔", "er"],["乌", "wu"],["兰", "lan"],["察", "cha"],["布", "bu"],["沈", "shen"],["阳", "yang"],["大", "da"],["连", "lian"],["鞍", "an"],["山", "shan"],["抚", "fu"],["顺", "shun"],["本", "ben"],["溪", "xi"],["丹", "dan"],["东", "dong"],["锦", "jin"],["营", "ying"],["阜", "fu"],["新", "xin"],["辽", "liao"],["盘", "pan"],["锦", "jin"],["铁", "tie"],["岭", "ling"],["朝", "zhao"],["阳", "yang"],["葫", "hu"],["芦", "lu"],["岛", "dao"],["长", "chang"],["春", "chun"],["吉", "ji"],["林", "lin"],["四", "si"],["平", "ping"],["辽", "liao"],["源", "yuan"],["通", "tong"],["化", "hua"],["白", "bai"],["山", "shan"],["松", "song"],["原", "yuan"],["白", "bai"],["城", "cheng"],["榆", "yu"],["树", "shu"],["德", "de"],["惠", "hui"],["蛟", "jiao"],["河", "he"],["桦", "hua"],["甸", "dian"],["舒", "shu"],["兰", "lan"],["磐", "pan"],["石", "shi"],["公", "gong"],["主", "zhu"],["岭", "ling"],["双", "shuang"],["辽", "liao"],["梅", "mei"],["河", "he"],["口", "kou"],["集", "ji"],["安", "an"],["洮", "tao"],["大", "da"],["安", "an"],["临", "lin"],["江", "jiang"],["延", "yan"],["吉", "ji"],["图", "tu"],["们", "men"],["敦", "dun"],["化", "hua"],["珲", "hui"],["春", "chun"],["龙", "long"],["井", "jing"],["和", "he"],["哈", "ha"],["尔", "er"],["滨", "bin"],["齐", "qi"],["齐", "qi"],["哈", "ha"],["尔", "er"],["黑", "hei"],["河", "he"],["大", "da"],["庆", "qing"],["伊", "yi"],["春", "chun"],["鹤", "he"],["岗", "gang"],["佳", "jia"],["木", "mu"],["斯", "si"],["双", "shuang"],["鸭", "ya"],["山", "shan"],["七", "qi"],["台", "tai"],["河", "he"],["鸡", "ji"],["西", "xi"],["牡", "mu"],["丹", "dan"],["江", "jiang"],["绥", "sui"],["化", "hua"],["尚", "shang"],["志", "zhi"],["五", "wu"],["常", "chang"],["讷", "ne"],["河", "he"],["北", "bei"],["安", "an"],["五", "wu"],["大", "da"],["连", "lian"],["池", "chi"],["嫩", "nen"],["江", "jiang"],["铁", "tie"],["力", "li"],["同", "tong"],["江", "jiang"],["富", "fu"],["锦", "jin"],["虎", "hu"],["林", "lin"],["密", "mi"],["山", "shan"],["绥", "sui"],["芬", "fen"],["河", "he"],["海", "hai"],["林", "lin"],["宁", "ning"],["安", "an"],["达", "da"],["肇", "zhao"],["东", "dong"],["海", "hai"],["伦", "lun"],["穆", "mu"],["棱", "leng"],["东", "dong"],["宁", "ning"],["抚", "fu"],["远", "yuan"],["漠", "mo"],["南", "nan"],["京", "jing"],["徐", "xu"],["州", "zhou"],["连", "lian"],["云", "yun"],["港", "gang"],["宿", "su"],["迁", "qian"],["淮", "huai"],["安", "an"],["盐", "yan"],["城", "cheng"],["扬", "yang"],["州", "zhou"],["泰", "tai"],["州", "zhou"],["南", "nan"],["通", "tong"],["镇", "zhen"],["江", "jiang"],["常", "chang"],["州", "zhou"],["无", "wu"],["锡", "xi"],["苏", "su"],["州", "zhou"],["常", "chang"],["熟", "shu"],["张", "zhang"],["家", "jia"],["港", "gang"],["太", "tai"],["仓", "cang"],["昆", "kun"],["山", "shan"],["江", "jiang"],["阴", "yin"],["宜", "yi"],["兴", "xing"],["溧", "li"],["阳", "yang"],["扬", "yang"],["中", "zhong"],["句", "ju"],["容", "rong"],["丹", "dan"],["阳", "yang"],["如", "ru"],["皋", "gao"],["启", "qi"],["东", "dong"],["海", "hai"],["安", "an"],["高", "gao"],["邮", "you"],["仪", "yi"],["征", "zheng"],["兴", "xing"],["化", "hua"],["泰", "tai"],["兴", "xing"],["靖", "jing"],["江", "jiang"],["东", "dong"],["台", "tai"],["邳", "pi"],["新", "xin"],["沂", "yi"],["杭", "hang"],["州", "zhou"],["宁", "ning"],["波", "bo"],["湖", "hu"],["州", "zhou"],["嘉", "jia"],["兴", "xing"],["舟", "zhou"],["山", "shan"],["绍", "shao"],["兴", "xing"],["衢", "qu"],["州", "zhou"],["金", "jin"],["华", "hua"],["台", "tai"],["州", "zhou"],["温", "wen"],["州", "zhou"],["丽", "li"],["水", "shui"],["建", "jian"],["德", "de"],["慈", "ci"],["溪", "xi"],["余", "yu"],["姚", "yao"],["平", "ping"],["湖", "hu"],["海", "hai"],["宁", "ning"],["桐", "tong"],["乡", "xiang"],["诸", "zhu"],["暨", "ji"],["嵊", "sheng"],["州", "zhou"],["江", "jiang"],["山", "shan"],["兰", "lan"],["溪", "xi"],["永", "yong"],["康", "kang"],["义", "yi"],["乌", "wu"],["东", "dong"],["阳", "yang"],["临", "lin"],["海", "hai"],["温", "wen"],["岭", "ling"],["瑞", "rui"],["安", "an"],["乐", "le"],["清", "qing"],["龙", "long"],["港", "gang"],["龙", "long"],["泉", "quan"],["玉", "yu"],["环", "huan"],["合", "he"],["肥", "fei"],["芜", "wu"],["湖", "hu"],["蚌", "bang"],["埠", "bu"],["淮", "huai"],["南", "nan"],["马", "ma"],["鞍", "an"],["山", "shan"],["淮", "huai"],["北", "bei"],["铜", "tong"],["陵", "ling"],["安", "an"],["庆", "qing"],["黄", "huang"],["山", "shan"],["滁", "chu"],["州", "zhou"],["阜", "fu"],["阳", "yang"],["宿", "su"],["州", "zhou"],["六", "liu"],["安", "an"],["亳", "bo"],["州", "zhou"],["池", "chi"],["州", "zhou"],["宣", "xuan"],["城", "cheng"],["巢", "chao"],["湖", "hu"],["桐", "tong"],["城", "cheng"],["天", "tian"],["长", "chang"],["明", "ming"],["界", "jie"],["首", "shou"],["宁", "ning"],["国", "guo"],["广", "guang"],["德", "de"],["潜", "qian"],["山", "shan"],["无", "wu"],["为", "wei"],["厦", "sha"],["门", "men"],["福", "fu"],["州", "zhou"],["南", "nan"],["平", "ping"],["三", "san"],["明", "ming"],["莆", "pu"],["田", "tian"],["泉", "quan"],["州", "zhou"],["漳", "zhang"],["州", "zhou"],["龙", "long"],["岩", "yan"],["宁", "ning"],["德", "de"],["福", "fu"],["清", "qing"],["邵", "shao"],["武", "wu"],["武", "wu"],["夷", "yi"],["山", "shan"],["建", "jian"],["瓯", "ou"],["永", "yong"],["安", "an"],["石", "shi"],["狮", "shi"],["晋", "jin"],["江", "jiang"],["南", "nan"],["安", "an"],["龙", "long"],["海", "hai"],["漳", "zhang"],["平", "ping"],["福", "fu"],["安", "an"],["福", "fu"],["鼎", "ding"],["南", "nan"],["昌", "chang"],["九", "jiu"],["江", "jiang"],["景", "jing"],["德", "de"],["镇", "zhen"],["鹰", "ying"],["潭", "tan"],["新", "xin"],["余", "yu"],["萍", "ping"],["乡", "xiang"],["赣", "gan"],["州", "zhou"],["上", "shang"],["饶", "rao"],["抚", "fu"],["州", "zhou"],["宜", "yi"],["春", "chun"],["吉", "ji"],["安", "an"],["瑞", "rui"],["昌", "chang"],["共", "gong"],["青", "qing"],["城", "cheng"],["庐", "lu"],["山", "shan"],["乐", "le"],["平", "ping"],["瑞", "rui"],["德", "de"],["丰", "feng"],["城", "cheng"],["樟", "zhang"],["树", "shu"],["高", "gao"],["安", "an"],["吉", "ji"],["首", "shou"],["岳", "yue"],["阳", "yang"],["常", "chang"],["德", "de"],["益", "yi"],["阳", "yang"],["郴", "chen"],["州", "zhou"],["永", "yong"],["州", "zhou"],["邵", "shao"],["怀", "huai"],["化", "hua"],["娄", "lou"],["底", "di"],["冷", "leng"],["水", "shui"],["涟", "lian"],["源", "yuan"],["武", "wu"],["冈", "gang"],["洪", "hong"],["江", "jiang"],["津", "jin"],["沅", "yuan"],["汨", "mi"],["罗", "luo"],["临", "lin"],["湘", "xiang"],["醴", "li"],["陵", "ling"],["湘", "xiang"],["乡", "xiang"],["韶", "shao"],["山", "shan"],["资", "zi"],["兴", "xing"],["清", "qing"],["远", "yuan"],["英", "ying"],["德", "de"],["连", "lian"],["州", "zhou"],["乐", "le"],["昌", "chang"],["南", "nan"],["雄", "xiong"],["兴", "xing"],["宁", "ning"],["普", "pu"],["宁", "ning"],["陆", "lu"],["丰", "feng"],["恩", "en"],["平", "ping"],["台", "tai"],["开", "kai"],["鹤", "he"],["化", "hua"],["信", "xin"],["宜", "yi"],["高", "gao"],["吴", "wu"],["廉", "lian"],["雷", "lei"],["茂", "mao"],["名", "ming"],["湛", "zhan"],["阳", "yang"],["江", "jiang"],["肇", "zhao"],["庆", "qing"],["云", "yun"],["浮", "fu"],["罗", "luo"],["定", "ding"],["东", "dong"],["阳", "yang"],["揭", "jie"],["阳", "yang"],["潮", "chao"],["汕", "shan"],["河", "he"],["源", "yuan"],["梅", "mei"],["惠", "hui"],["莞", "guan"],["中", "zhong"],["山", "shan"],["珠", "zhu"],["海", "hai"],["汕", "shan"],["头", "tou"],["韶", "shao"],["关", "guan"],["清", "qing"],["远", "yuan"],["河", "he"],["北", "bei"],["贺", "he"],["州", "zhou"],["玉", "yu"],["林", "lin"],["桂", "gui"],["林", "lin"],["柳", "liu"],["州", "zhou"],["梧", "wu"],["海", "hai"],["北", "bei"],["海", "hai"],["钦", "qin"],["州", "zhou"],["百", "bai"],["色", "se"],["防", "fang"],["城", "cheng"],["港", "gang"],["贵", "gui"],["港", "gang"],["河", "he"],["池", "chi"],["崇", "chong"],["左", "zuo"],["来", "lai"],["宾", "bin"],["合", "he"],["山", "shan"],["凭", "ping"],["祥", "xiang"],["宜", "yi"],["州", "zhou"],["万", "wan"],["宁", "ning"],["文", "wen"],["昌", "chang"],["儋", "dan"],["州", "zhou"],["琼", "qiong"],["海", "hai"],["东", "dong"],["方", "fang"],["五", "wu"],["指", "zhi"],["山", "shan"],["广", "guang"],["安", "an"],["德", "de"],["乐", "le"],["山", "shan"],["巴", "ba"],["中", "zhong"],["内", "nei"],["江", "jiang"],["宜", "yi"],["宾", "bin"],["泸", "lu"],["州", "zhou"],["自", "zi"],["贡", "gong"],["绵", "mian"],["阳", "yang"],["遂", "sui"],["宁", "ning"],["眉", "mei"],["山", "shan"],["资", "zi"],["阳", "yang"],["达", "da"],["州", "zhou"],["雅", "ya"],["安", "an"],["广", "guang"],["元", "yuan"],["凉", "liang"],["山", "shan"],["攀", "pan"],["枝", "zhi"],["花", "hua"],["德", "de"],["阳", "yang"],["江", "jiang"],["油", "you"],["绵", "mian"],["竹", "zhu"],["广", "guang"],["汉", "han"],["什", "shen"],["邡", "fang"],["彭", "peng"],["州", "zhou"],["华", "hua"],["蓥", "ying"],["西", "xi"],["昌", "chang"],["邛", "qiong"],["崃", "lai"],["简", "jian"],["阳", "yang"],["崇", "chong"],["州", "zhou"],["阆", "lang"],["中", "zhong"],["都", "du"],["江", "jiang"],["堰", "yan"],["贵", "gui"],["阳", "yang"],["安", "an"],["顺", "shun"],["遵", "zun"],["义", "yi"],["毕", "bi"],["节", "jie"],["铜", "tong"],["仁", "ren"],["盘", "pan"],["水", "shui"],["六", "liu"],["盘", "pan"],["水", "shui"],["兴", "xing"],["义", "yi"],["都", "du"],["匀", "yun"],["凯", "kai"],["里", "li"],["清", "qing"],["镇", "zhen"],["赤", "chi"],["水", "shui"],["仁", "ren"],["怀", "huai"],["福", "fu"],["泉", "quan"],["昆", "kun"],["明", "ming"],["玉", "yu"],["溪", "xi"],["大", "da"],["理", "li"],["曲", "qu"],["靖", "jing"],["昭", "zhao"],["通", "tong"],["保", "bao"],["山", "shan"],["丽", "li"],["江", "jiang"],["临", "lin"],["沧", "cang"],["楚", "chu"],["雄", "xiong"],["个", "ge"],["旧", "jiu"],["开", "kai"],["远", "yuan"],["景", "jing"],["洪", "hong"],["安", "an"],["宣", "xuan"],["威", "wei"],["拉", "la"],["萨", "sa"],["日", "ri"],["喀", "ka"],["则", "ze"],["西", "xi"],["安", "an"],["咸", "xian"],["阳", "yang"],["榆", "yu"],["林", "lin"],["宝", "bao"],["鸡", "ji"],["铜", "tong"],["川", "chuan"],["渭", "wei"],["南", "nan"],["汉", "han"],["中", "zhong"],["安", "an"],["康", "kang"],["商", "shang"],["洛", "luo"],["兰", "lan"],["州", "zhou"],["白", "bai"],["银", "yin"],["武", "wu"],["威", "wei"],["金", "jin"],["昌", "chang"],["张", "zhang"],["掖", "ye"],["酒", "jiu"],["泉", "quan"],["嘉", "jia"],["峪", "yu"],["庆", "qing"],["平", "ping"],["凉", "liang"],["定", "ding"],["西", "xi"],["陇", "long"],["南", "nan"],["天", "tian"],["水", "shui"],["玉", "yu"],["门", "men"],["临", "lin"],["夏", "xia"],["合", "he"],["作", "zuo"],["敦", "dun"],["煌", "huang"],["甘", "gan"],["南", "nan"],["西", "xi"],["宁", "ning"],["格", "ge"],["尔", "er"],["木", "mu"],["德", "de"],["令", "ling"],["哈", "ha"],["西", "xi"],["银", "yin"],["固", "gu"],["原", "yuan"],["石", "shi"],["嘴", "zui"],["山", "shan"],["青", "qing"],["铜", "tong"],["峡", "xia"],["中", "zhong"],["卫", "wei"],["吴", "wu"],["忠", "zhong"],["灵", "ling"],["武", "wu"],["乌", "wu"],["鲁", "lu"],["木", "mu"],["齐", "qi"],["石", "shi"],["河", "he"],["子", "zi"],["喀", "ka"],["什", "shen"],["哈", "ha"],["勒", "le"],["阿", "a"],["尔", "er"],["泰", "tai"],["阜", "fu"],["康", "kang"],["库", "ku"],["尔", "er"],["勒", "le"],["阿", "a"],["克", "ke"],["苏", "su"],["哈", "ha"],["密", "mi"],["克", "ke"],["拉", "la"],["玛", "ma"],["依", "yi"],["昌", "chang"],["吉", "ji"],["阿", "a"],["拉", "la"],["尔", "er"],["喀", "ka"],["昆", "kun"],["屯", "tun"],["米", "mi"],["泉", "quan"],["和", "he"],["田", "tian"],["台", "tai"],["北", "bei"],["新", "xin"],["北", "bei"],["桃", "tao"],["园", "yuan"],["台", "tai"],["中", "zhong"],["台", "tai"],["南", "nan"],["高", "gao"],["雄", "xiong"],["基", "ji"],["隆", "long"],["嘉", "jia"],["义", "yi"],["新", "xin"],["竹", "zhu"],["苗", "miao"],["栗", "li"],["花", "hua"],["屏", "ping"],["东", "dong"],["宜", "yi"],["兰", "lan"],["彰", "zhang"],["化", "hua"],["南", "nan"],["投", "tou"],["云", "yun"],["林", "lin"],["嘉", "jia"],["义", "yi"],["台", "tai"],["澎", "peng"],["湖", "hu"],["金", "jin"],["门", "men"],["马", "ma"],["祖", "zu"],["连", "lian"],["江", "jiang"],["长", "chang"],["垣", "yuan"],["荥", "xing"],["泌", "mi"],["泌", "mi"],["浚", "jun"],["杞", "qi"],["睢", "sui"],["柘", "zhe"],["鄢", "yan"],["鄄", "juan"],["郓", "yun"],["缑", "gou"],["陟", "zhi"],["郾", "yan"],["顼", "xu"],["濮", "pu"],["漯", "luo"],["渑", "mian"],])

Arkts代码实现数组搜索:首先将输入值存储为搜索关键字,然后通过判断该关键字是否为纯小写字母来区分是拼音搜索还是文字搜索。若是拼音搜索,则会遍历城市名称的每个汉字,利用预先准备的拼音映射获取拼音并拼接成完整拼音字符串,再检查是否包含关键字来筛选城市;若为文字搜索,则直接判断城市名称是否包含关键字来筛选,最终筛选出的符合条件的城市数据存放在数组

关键代码如下:

// 使用正则表达式判断 searchKey(搜索关键字)是否是由纯小写字母组成,如果是,则认为是拼音搜索的情况
if (/^[a-z]+$/.test(searchKey)) {
    // 通过filter方法对cityData进行筛选
    this.cityList = cityData.filter((city) => {
        let cityPinyin = "";
        // 遍历当前城市名称的每个字符(这里city是字符串形式的城市名)
        for (let i = 0; i < city.length; i++) {
            // 从pinyinMap中获取当前汉字对应的拼音
            let charPinyin = pinyinMap.get(city[i]);
            if (charPinyin) {
                // 如果获取到了拼音,就将其拼接到cityPinyin字符串中,逐步构建出整个城市名称对应的拼音字符串
                cityPinyin += charPinyin;
            }
        }
        // 检查构建好的城市拼音字符串cityPinyin是否包含传入的搜索关键字,如果包含则该城市符合筛选条件,会被保留在新d的this.cityList数组中
        return cityPinyin.includes(searchKey);
    });
}
// 如果searchKey不是纯小写字母组成的,也就是认为是按照城市名称文字进行搜索的情况
else {
    // 同样使用filter方法对cityData进行筛选,筛选条件是城市名称中是否包含当前存储的搜索关键字,符合条件的城市会被添加到this.cityList数组中
    this.cityList = cityData.filter((city) => city.includes(this.searchString));
}

页面整体代码,仅供参考

import { router } from '@kit.ArkUI'
import { cityData, pinyinMap} from '../models/CityModel';

@Entry
@Component
export struct CitySelectionPages {
  @State searchString: string = ''
  @State selectedLocationIndex: number | null = null;
  private scroller: Scroller = new Scroller();
  @State cityList: Array<string> = cityData
  build() {
    RelativeContainer() {
      Column() {
        //搜索框
        Column() {
          Search({
            value: this.searchString,
            placeholder: '请输入城市名称'
          })
            .width('86%')
            .height(46)
            .backgroundColor($r('sys.color.comp_background_list_card'))
            .placeholderColor('rgba(137, 186, 32, 0.5)')
            .fontColor('#89BA20')
            .minFontSize(18)
            .searchIcon({ size: 19})
            .caretStyle({ width: 1, color: '#89BA20' })
            .onChange(async (value: string)=>{
              // 假设 `this.searchString` 用于存储搜索的关键字,将传入的 `value` 值赋给它
              this.searchString = value;
              // 使用正则表达式判断 `value` 是否是由纯小写字母组成,如果是,则认为是拼音搜索的情况
              if (/^[a-z]+$/.test(value)) {
                // 通过 `filter` 方法对 `cityData`(假设是包含城市相关信息的数组,每个元素代表一个城市对象等情况)进行筛选
                this.cityList = cityData.filter((city) => {
                  let cityPinyin = "";
                  // 遍历当前城市名称(`city`)的每个字符(这里假设 `city` 是字符串形式的城市名)
                  for (let i = 0; i < city.length; i++) {
                    // 从 `pinyinMap`(假设是一个 `Map` 类型,存储着汉字与拼音对应关系的数据结构)中获取当前汉字对应的拼音
                    let charPinyin = pinyinMap.get(city[i]);
                    if (charPinyin) {
                      // 如果获取到了拼音,就将其拼接到 `cityPinyin` 字符串中,逐步构建出整个城市名称对应的拼音字符串
                      cityPinyin += charPinyin;
                    }
                  }
                  // 检查构建好的城市拼音字符串 `cityPinyin` 是否包含传入的搜索关键字(`value`,此时作为拼音搜索的关键字),如果包含则该城市符合筛选条件,会被保留在新的 `this.cityList` 数组中
                  return cityPinyin.includes(value);
                });
              }
              // 如果 `value` 不是纯小写字母组成的,也就是认为是按照城市名称文字进行搜索的情况
              else {
                // 同样使用 `filter` 方法对 `cityData` 进行筛选,筛选条件是城市名称(`city`)中是否包含当前存储的搜索关键字(`this.searchString`),符合条件的城市会被添加到 `this.cityList` 数组中
                this.cityList = cityData.filter((city) => city.includes(this.searchString));
              }
            })
        }
        .height(57)
        .width('100%')
        .margin({ top: 16})

        //城市列表 南
        List({ scroller: this.scroller }) {
          ForEach(this.cityList, (item: string, index: number) => {
            ListItem() {
              Column() {
                Row() {
                  Text(item)
                    .fontSize(16)
                    .lineHeight(23.17)
                    .margin({ left: 12 })
                    .fontColor(Color.Black)
                }
                .width('100%')
                .height(40)
                .borderRadius(6)
                .backgroundColor(this.selectedLocationIndex === index ? '#EDEDED' : '#F5F5F5')
                .onClick(() =>{
                  this.selectedLocationIndex = index
                })
                Divider()
                  .width('100%')
                  .margin({ top: 4 , bottom: 4 })
                  .color(Color.Black)
                  .strokeWidth(0.2)
              }
              .justifyContent(FlexAlign.Start)
              .alignItems(HorizontalAlign.Start)
            }
          })
        }
        .height('100%')
        .width('86%')
        .layoutWeight(1) // 自适应占满剩余空间
        .listDirection(Axis.Vertical) // 排列方向
        .scrollBar(BarState.Off)
      }
      .backgroundColor(Color.White)
      .width('100%')
      .height('100%')
    }
    .height('100%')
    .width('100%')
  }
}

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
1
收藏 1
回复
举报
1条回复
按时间正序
/
按时间倒序
在敲键盘的小鱼干很饥饿
在敲键盘的小鱼干很饥饿

我哩个暴力搜索啊,牛逼啊,数据少就该这么干

回复
2024-12-11 20:20:42
回复
    相关推荐