專案遇到後端資料來源與前端的下拉選單資料不相符,需要透過前端加工送出到後端可以順利傳給另一個資料庫做串接。
情境
- 後端來的資料是全大寫。
- 前端要透過字串加工改成小駝峰的寫法。
- 使用 chatAt(), split(),slice(),join()
實作
本次後端資料來的是個人資料,架構示意如下:
API data
1 2 3 4 5 6 7 8
| StringData:{ firstName:'TIM', lastName:'HSU', title:'MR', countryCode:'886', phone:'911222333', ticket:'1891287654321' }
|
修改稱謂
後端來的資料為 MR
,但前端需要的是 Mr.
,使用 chatAt() ,toUppercase(), slice(),toLowerCase() 調整一下:
1 2 3 4 5
| updateTitle(){ const title = data.title; const titleResult = title.charAt(0).toUpperCase() + title.slice(1).toLowerCase() + '.'; console.log(titleResult) }
|
修改票號
要將票號資料 1891287654321
改成 189-1287654321
。
可以用正規表達式,也可以用字串方法處理再重新組合。
1 2 3 4 5 6 7 8
| updateTicket(){ const getTicketNumber = this.data.ticket; let getTicketNumberFormat = getTicketNumber.split(''); getTicketNumberFormat.splice(3, 0, '-'); getTicketNumberFormat = getTicketNumberFormat.join(''); }
|
套用 Vue 前端框架顯示
範例程式碼:連結
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
| <template> <div class="mx-auto container"> <h3 class="text-left mb-2">點擊按鈕將稱謂改成開頭大寫</h3> <div class="flex items-center"> <input type="text" v-model="stringData.title" class="w-full p-2 border-2 border-gray-300" /> <button @click="updateTitle" class="ml-2 px-4 py-2 bg-green-400"> click </button> </div>
<h3 class="text-left mb-2 mt-4">點擊按鈕修改票號格式</h3> <div class="flex items-center"> <input type="text" v-model="stringData.ticket" class="w-full p-2 border-2 border-gray-300" /> <button @click="updateTicket" class="ml-2 px-4 py-2 bg-purple-500 text-white" > click </button> </div> </div> </template>
<script> export default { name: "UpdateString",
data() { return { stringData: { firstName: "TIM", lastName: "HSU", title: "MR", countryCode: "886", phone: "911222333", ticket: "1891287654321", }, }; }, methods: { updateTitle() { const title = this.stringData.title; const titleResult = title.charAt(0).toUpperCase() + title.slice(1).toLowerCase() + "."; this.stringData.title = titleResult; }, updateTicket() { const getTicketNumber = this.stringData.ticket; let getTicketNumberFormat = getTicketNumber.split(""); getTicketNumberFormat.splice(3, 0, "-"); getTicketNumberFormat = getTicketNumberFormat.join(""); this.stringData.ticket = getTicketNumberFormat; }, }, }; </script>
|