vue3中處理不同數據結構JSON的實現
有時候,后端返回的JSON數據格式,是前端不需要的格式類型,這時,要么讓后端修改,你要什么格式,那么讓后端大哥哥給你返回什么格式。但是有時候不盡人意,后端大哥哥讓你自己轉換,此時就甩給前端了,只能在前端自己處理了。
1.對后端數據的字段值/字段進行操作
后端的JSON格式:
//后端返回的數據格式 var data = ref([{ id: '00111322', name: 'zs01', age: 18 }, { id: '00035565644', name: 'ls02', age: 20 } ])
1.對字段的值進行更改
//返回的格式 var data1 = data.value.map(res => { return { ...res, //...使用es6語法,表示每一個對象,這里指的就是 {id: '00111322',name: 'zs01',age: 18} id: Number(res.id), //把字符串轉換數字類型 age: res.age + 1, //給每一個人加一歲 name: res.name.substring(0, 2) //把name的值截取2位 } }) console.log(...data1) //...表示返回每一個元素
效果
2.對字段進行操作
//返回的格式 var data1 = data.value.map(res => { return { ...res, //...使用es6語法,表示每一個對象,這里指的就是 {id: '00111322',name: 'zs01',age: 18} id: Number(res.id), //把字符串轉換數字類型 age: res.age + 1, //給每一個人加一歲 name1: res.name.substring(0, 2), //把name的值截取2位,并且需要name1字段 mark:res.id+res.name } }) console.log(...data1) //...表示返回每一個元素
效果
2.處理多層級的數據結構
后端的JSON格式:
//后端返回的數據格式 var data = ref([{ title: '一號樓', key: '100', children: [{ title: '一單元', key: '110', children: [{ title: '房間1', key: '111' }, { title: '房間2', key: '112' } ] }] }])
1.修改字段操作
//把title和key,分別改成id和name,一一對應起來,返回的格式 ,使用遞歸的方式 function formatData(data1) { data1.forEach(res => { res.id = res.key; res.name = res.title; delete res.key; delete res.title; if (res.children) { formatData(res.children) } }) } formatData(data.value) //調用 console.log(...data.value) //...表示返回每一個元素 console.log(JSON.stringify(data.value)) //返回字符串
效果
2.修改字段的值操作
//在最后一個字段title中,把前面的數據加上 function formatData(data1, text) { data1.forEach(res => { if (!res.children) { res.title = text + res.title } if (res.children) { text += res.title; formatData(res.children, text) } }) } formatData(data.value, '') //調用 console.log(...data.value) //...表示返回每一個元素 console.log(JSON.stringify(data.value)) //返回字符串
效果
3.對JSON的字段進行排序
后端JSON數據格式:
//后端返回的數據格式 var data = ref([{ title: '一號樓', key: '100', children: [{ title: '一單元', key: '110', children: [{ title: '房間1', key: '111' }, { title: '房間2', key: '112' } ] }] }, { title: '二號樓', key: '200', children: [{ title: '二單元', key: '210', children: [{ title: '房間1', key: '211' }, { title: '房間2', key: '212' } ] }] }])
根據key的值排序
//根據根據key的值排序 const compare = p => (m, n) => n[p] - m[p]; //簡寫排序,可以參考JavaScript中sort() 方法 //m[p] - n[p]升序 n[p] - m[p] 降序 function formatData(data1, sortField) { //key:需要排序的字段 data1.sort(compare(sortField)); data1.forEach(res => { if (!res.children) { return; } else { formatData(res.children, sortField); } }); } formatData(data.value, 'key') //調用,根據key的值排序 console.log(...data.value) //...表示返回每一個元素 console.log(JSON.stringify(data.value)) //返回字符串
效果,降序排列
4.實際案例
1.在使用uCharts時,經常需要進行數據轉換
2.把res轉成res1格式,因為res1是需要的
3.定義 res
let res = ref( [{ "name": "的方式是大多數", "value": 6 }, { "name": "yqwuwiyvui", "value": 3 }, { "name": "sdsfsdf", "value": 2 }, { "name": "wewerw", "value": 6 } ] )
4.定義res1和res1s,因為res1s是res1中series的值
let res1 = ref({ categories: [], series: [] }) let res1s = ref({ name: "", data: [] })
5.轉換
res.value.forEach((va) => { res1.value.categories.push(va.name) res1s.value.data.push(va.value) }) res1s.value.name = "目標值" res1.value.series.push(res1s.value) chartData.value = res1.value
6.效果
上面的方式可以實現,沒有問題,應該還有別的方式也行。
到此這篇關于vue3中處理不同數據結構JSON的實現的文章就介紹到這了,更多相關vue3處理JSON內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
laravel5.4+vue+element簡單搭建的示例代碼
本篇文章主要介紹了laravel5.4+vue+element簡單搭建的示例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-08-08vue3.0 CLI - 2.4 - 新組件 Forms.vue 中學習表單
這篇文章主要介紹了vue3.0 CLI - 2.4 - 新組件 Forms.vue 中學習表單的相關知識,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下2018-09-09vue中el-select中多選回顯數據后沒法重新選擇和更改的解決
本文主要介紹了vue中el-select中多選回顯數據后沒法重新選擇和更改解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2024-01-01vue-cli系列之vue-cli-service整體架構淺析
這篇文章主要介紹了vue-cli系列之vue-cli-service整體架構淺析,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-01-01