這篇文章是老王的朋友超超提供的,上午已經更新到原創微信公眾號「軟件老王」,鏈接,歡迎各位朋友關注老王的原創公號!
先看下最終效果圖,主要是渲染一個A - Z
的 通訊錄
。同樣的,如果你要做的是城市列表,也可以參考一下。
這邊是 Vant IndexBar 官方文檔 方便你查閱。
之前的通訊錄只是一個列表,名字沒有順序,查找起來不太方便,正好看到
Vant
組件庫里有IndexBar
這個組件,所以就立馬換掉了,總的來說有以下兩個步驟。
1. 格式化數據
一開始,后台給我的數據是這樣的,而我只想要一個包含名字的列表就夠了。
[
{
"createdAt": "2020-08-27 18:06:53",
"department": "總經理辦公室",
"employeeName": "安琪拉",
"objectId": "4a3eed5344",
"phoneNumber": "18012251502",
"serialNumber": "1",
"staffPosition": "總經理",
"updatedAt": "2020-08-27 18:06:53",
"username": "18012251502"
},
{
"createdAt": "2020-08-27 18:06:53",
"department": "生產部",
"employeeName": "呂布",
"objectId": "7236fed315",
"phoneNumber": "18257122100",
"serialNumber": "41",
"staffPosition": "裝配",
"updatedAt": "2020-08-27 18:06:53",
"username": "18257122100"
},
{
"createdAt": "2020-08-27 18:06:53",
"department": "技術部",
"employeeName": "趙雲",
"objectId": "6a1daa9a80",
"phoneNumber": "15852855556",
"serialNumber": "42",
"staffPosition": "管理員",
"updatedAt": "2020-08-27 18:07:26",
"username": "15852855556"
}
]
所以要先把返回的員工列表employeeList
做下處理
let employeeNameList = [];
for (let k in employeeList) {
employeeNameList.push(employeeList[k].employeeName)
}
處理之后的員工姓名表employeeNameList
是這樣的
[
"安琪拉",
"呂布",
"趙雲"
]
因為人名是漢字,無法與' A ' , ' B ' .....' X ' , ' Y ' , ' Z '
匹配,所以需要用第三方庫將漢字轉換成拼音,再提取首字母去完成匹配。我這邊用的是 wl-pinyin 這個庫。
使用之前先導入一下
import pinyin from "wl-pinyin"
定義一個字母表數組AlphabetList
,存放26個大寫字母。
AlphabetList : ["A", "B", "C", "D", "E", "F", "G", "H", "J", "K", "L", "M", "N", "P", "Q", "R", "S", "T", "W", "X", "Y", "Z"]
拼接數據
let firstName = {};
this.data.AlphabetList.forEach((item) => {
firstName[item] = [];
employeeNameList.forEach((el) => {
/** 主要在這一句,el代表每個名字如 “安琪拉” ,
pinyin.getFirstLetter(el) 取的是名字的首字母 “AQL” ,
.substring(0, 1) 就是只取第一個字符 ‘A’ **/
let first = pinyin.getFirstLetter(el).substring(0, 1);
if (first == item) {
firstName[item].push(el)
}
})
})
最后得到的數據格式是這樣的
{
"A": [
"安琪拉"
],
"B": [
"百里守約","白起","不知火舞"
],
...
"H": [
"黃忠"
],
"L": [
"呂布"
],
"M": [
"馬可波羅","馬超"
],
...
"Z": [
"趙雲","甄姬"
]
}
2. 布局中引入組件
<van-index-bar :sticky="false" >
<view wx:for="{{employeeNameList}}" wx:for-index="key" wx:for-item="value">
<!--顯示 A-Z -->
<van-index-anchor :use-slot="true" index='{{key}}'>
</van-index-anchor>
<!--遍歷每個字母對應的名字數組-->
<view wx:for='{{value}}' wx:for-item='employeeName' >{{employeeName}}</view>
</view>
</van-index-bar>
現在是2020年09月19日02:55:02,晚安
更多知識請關注公眾號:「軟件老王」,IT技術與相關干貨分享,回復關鍵字獲取對應干貨,java,送必看的10本“武功秘籍”;圖片,送100多萬張可商用高清圖片;面試,送剛畢業就能月薪“20k”的java面試題,后續不斷更新中,比如“軟考”、“工具”等,已經在整理中。