最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue3中處理不同數(shù)據(jù)結構JSON的實現(xiàn)

 更新時間:2023年06月19日 11:13:58   作者:故里2130  
本文主要介紹了vue3中處理不同數(shù)據(jù)結構JSON的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

有時候,后端返回的JSON數(shù)據(jù)格式,是前端不需要的格式類型,這時,要么讓后端修改,你要什么格式,那么讓后端大哥哥給你返回什么格式。但是有時候不盡人意,后端大哥哥讓你自己轉換,此時就甩給前端了,只能在前端自己處理了。

1.對后端數(shù)據(jù)的字段值/字段進行操作

后端的JSON格式:

//后端返回的數(shù)據(jù)格式
		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), //把字符串轉換數(shù)字類型
				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), //把字符串轉換數(shù)字類型
				age: res.age + 1, //給每一個人加一歲
				name1: res.name.substring(0, 2), //把name的值截取2位,并且需要name1字段
				mark:res.id+res.name
			}
		})
		console.log(...data1) //...表示返回每一個元素

效果 

2.處理多層級的數(shù)據(jù)結構

后端的JSON格式:

//后端返回的數(shù)據(jù)格式
		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中,把前面的數(shù)據(jù)加上
		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數(shù)據(jù)格式:

//后端返回的數(shù)據(jù)格式
		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'
					}
				]
			}]
		}])

根據(jù)key的值排序

//根據(jù)根據(jù)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') //調用,根據(jù)key的值排序
		console.log(...data.value) //...表示返回每一個元素
		console.log(JSON.stringify(data.value)) //返回字符串

效果,降序排列

4.實際案例

1.在使用uCharts時,經常需要進行數(shù)據(jù)轉換

2.把res轉成res1格式,因為res1是需要的

3.定義 res

let res = ref(
		[{
				"name": "的方式是大多數(shù)",
				"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.效果

上面的方式可以實現(xiàn),沒有問題,應該還有別的方式也行。

到此這篇關于vue3中處理不同數(shù)據(jù)結構JSON的實現(xiàn)的文章就介紹到這了,更多相關vue3處理JSON內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Vue獲取DOM元素樣式和樣式更改示例

    Vue獲取DOM元素樣式和樣式更改示例

    本篇文章主要介紹了Vue獲取DOM元素樣式和樣式更改示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • 1分鐘Vue實現(xiàn)右鍵菜單

    1分鐘Vue實現(xiàn)右鍵菜單

    今天給大家分享的是,如何在最短的時候內實現(xiàn)右鍵菜單。高效實現(xiàn)需求,避免重復造輪子。感興趣的可以了解一下
    2021-10-10
  • vue-cli如何關閉Uncaught?error的全屏提示

    vue-cli如何關閉Uncaught?error的全屏提示

    這篇文章主要介紹了vue-cli如何關閉Uncaught?error的全屏提示問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04
  • Vue記住滾動條和實現(xiàn)下拉加載的完美方法

    Vue記住滾動條和實現(xiàn)下拉加載的完美方法

    這篇文章主要給大家介紹了關于Vue記住滾動條和實現(xiàn)下拉加載的完美方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2020-07-07
  • 解決vue3打包過后空白頁面的情況

    解決vue3打包過后空白頁面的情況

    這篇文章主要介紹了解決vue3打包過后空白頁面的情況,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • vue3緩存頁面keep-alive及路由統(tǒng)一處理詳解

    vue3緩存頁面keep-alive及路由統(tǒng)一處理詳解

    當我們不想每次跳轉路由都會重新加載頁面時(重新加載頁面很耗時),就可以考慮使用keep-alive緩存頁面了,這篇文章主要給大家介紹了關于vue3緩存頁面keep-alive及路由統(tǒng)一處理的相關資料,需要的朋友可以參考下
    2021-10-10
  • vuex如何重置所有state(可定制)

    vuex如何重置所有state(可定制)

    在正式場景中我們經常遇到一個問題,就是登出頁面或其他操作的時候,我們需要重置所有的vuex,讓其變?yōu)槌跏紶顟B(tài),那么如何重置呢,下面就跟隨小編一起來了解一下
    2019-01-01
  • vue綁定事件后獲取綁定事件中的this方法

    vue綁定事件后獲取綁定事件中的this方法

    今天小編就為大家分享一篇vue綁定事件后獲取綁定事件中的this方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • 淺入深出Vue之自動化路由

    淺入深出Vue之自動化路由

    這篇文章主要介紹了淺入深出Vue之自動化路由,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • vue中el-tree?橫向滾動條的實現(xiàn)

    vue中el-tree?橫向滾動條的實現(xiàn)

    本文詳細介紹了在Vue框架中使用el-tree組件創(chuàng)建橫向滾動條的方法,通過代碼示例和步驟說明,幫助開發(fā)者理解和實現(xiàn)橫向滾動功能,感興趣的可以了解一下
    2024-09-09

最新評論

襄樊市| 山阳县| 雷州市| 延长县| 仙桃市| 东明县| 克东县| 汉阴县| 宁河县| 大丰市| 峨眉山市| 息烽县| 宜昌市| 宁都县| 辉县市| 田阳县| 关岭| 运城市| 安徽省| 措勤县| 承德市| 淮北市| 榆中县| 盘山县| 安吉县| 沐川县| 芷江| 石柱| 濮阳县| 陕西省| 疏勒县| 双牌县| 长阳| 容城县| 高清| 南陵县| 六安市| 泰兴市| 道孚县| 渭南市| 屯昌县|