npm包-js-pinyin獲取中文拼音,實現按26個首字母展示城市

npm包-js-pinyin獲取中文拼音,實現按26個首字母展示城市

js-pinyin

npm安裝js-pinyin

npm install js-pinyin

vue實現代碼

獲取下面的格式,26個首字母對應的城市

[
	{
		"title":"A", 
		"city": ["阿拉善盟", "安陽市", "安慶市"]
	},
	{
		"title":"B", 
		"city": ["北京市", "包頭市", "白城市", ...]
	},...
]
<template>
  <div class="">
    <dl class="m-categroy">
      <dt>按拼音首字母選擇:</dt>
      <dd v-for="item in list" :key="item">
        <a :href="'#city-' + item">{{item}}</a>
      </dd>
    </dl>
    <dl v-for="item in block" :key="item.title" class="m-categroy-section">
      <dt :id="'city-' + item.title">{{item.title}}</dt>
      <dd>
        <span v-for="c in item.city" :key="c">{{c}}</span>
      </dd>
    </dl>
  </div>
</template>

<script>
import pyjs from 'js-pinyin'
// pyjs.getFullChars('汕頭') // ShanTou 返回中文全拼 首字母大寫

export default {
  data() {
    return {
      list: "ABCDEFGHIJKLMNOPQRSTUVWXYZ".split(""),
      block: [{title:"A", city:["安徽"]}]
    };
  },
  async mounted() {
    let _this = this
    let blocks = []
    let {status, data:{city}} = await _this.$axios.get('/geo/city')
    if (status === 200) {
      // p存城市首字母
      let p 
      // 存首字母code值 用來排序
      let c 
      // 保存每個拼音字母對應的城市數組
      let d = {}
      console.log(city)
      city.forEach(item => {
        // pyjs.getFullChars('汕頭') // ShanTou 返回中文全拼 首字母大寫
        console.log("pyjs.getFullChars('item.name'):" + pyjs.getFullChars(item.name))
        p = pyjs.getFullChars(item.name).toLowerCase().slice(0, 1)
        c = p.charCodeAt(0)
        // 'a'.charCodeAt(0)爲97 'z'.charCodeAt(0)爲122
        // 'A'.charCodeAt(0) 爲65 'Z'.charCodeAt(0)爲90
        if (c>96 && c<123) {
          if(!d[p]) {
            d[p] = []
          } else {
            d[p].push(item.name)
          }
        }
      })
      for(let[k, v] of Object.entries(d)) {
        blocks.push({
          title: k.toUpperCase(),
          city: v
        })
      }
      _this.block = blocks.sort((a, b) => a.title.charCodeAt(0) - b.title.charCodeAt(0))
      

    }
  }
};
</script>

<style lang="scss">
@import "@/assets/css/changeCity/categroy.scss";
</style>

城市展示效果圖

在這裏插入圖片描述


謝謝你閱讀到了最後
期待你,點贊、評論、交流

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章