亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JSON數據行轉列的應用是怎樣的

發布時間:2021-11-17 14:16:07 來源:億速云 閱讀:160 作者:柒染 欄目:web開發

這篇文章將為大家詳細講解有關JSON數據行轉列的應用是怎樣的,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

背景

先說說為什么要弄什么行轉列。

時間類別費用
2014-07-08電費120
2014-07-08     水費23
2014-07-09電費44
2014-07-09水費77
2014-07-10電費45
2014-07-10水費21
2014-07-11電費34
2014-07-11水費27

費勁的弄出表格,才發現,弄成了每天的水電費,不過是測試數據,不要在意這些細節。

很多時候我們就通過sql語句在數據庫中查詢到如上數據,那么展現到頁面的時候,勢必要變成下面一種格式。

時間電費水費
2014-07-0812023
2014-07-08     4477
2014-07-094566
2014-07-094377
2014-07-102145
2014-07-105421
2014-07-116534
2014-07-116527

那我們循環來生成table的html吧。

有些善于提問的朋友可能會問到,既然要這樣顯示,那么可以把電費和水費作為列存儲在table中啊。這里不多討論這個話題,因為中國的收費越來越多,物業費、保護費、稅收、天然氣等等各種名目......

因此才希望無論費用類別有多少種,都能把它自動轉換成列名信息,以表格形式呈現在用戶面前。

實現

實現起來很簡單,指定主鍵字段,用來作為列名的字段,值字段,對應上面的實例依次為 "時間",“類別”,"費用"。

主要思路則是,遍歷JSON,取到每一行的類別的值,作為列名存儲。

這里增加了一個默認值,意在解決數據不完整的問題。

再次用下上面的實例,正確的做法是每天都會對水表和電表進行抄表計算費用,那么萬一哪天沒寫怎么辦,那轉換后該結構不是不完整了嗎,比如2014-07-09號只有電費,連水費這一行數據都沒有,因此在轉換成功后,特意檢測了是否存在這樣的情況,如果存在,則設置默認值。

/* json數據行列轉換       * @jsonData json數據源       * @idField  條件字段       * @colField 生成列名的字段       * @valueField 生成值的字段       * @emptyValue 默認值 避免有些數據不全      */     function row2col(jsonData, idField, colField, valueField, emptyValue) {          var result = [], //存儲返回的數據              idIndexData = {},//存儲id在數組中的信息(位置)              resultColumns = {},//存儲列名數據              curRecord = null;//存儲當前數據           var colFields = colField.split(','); //           // 循環整個JSON數組:[{...},{...},{...},...]            for (var idx = 0; idx < jsonData.length; idx++) {               //當前json數據對象              var cdata = jsonData[idx];               //根據主鍵值,查找到結果數組中的索引號              var idValue = cdata[idField];              var num = idIndexData[idValue];//獲取存儲該id的數組索引號              if (num != null) {                  curRecord = result[num];              } else {                  //初始化數據時保持完整的結構信息 避免因為缺乏數據,缺乏指定的列數據                  curRecord = {};              }               // 指定的colFields列下的數據作為y軸,則取出該列的數據作為y軸即可              for (var i in colFields) {                  var key = colFields[i];                   //獲取到colField的值,作為列名                  var value = cdata[valueField];                  curRecord[value] = cdata[key];                   //存儲列名                  resultColumns[value] = null;                  break;              }               //除數據內容外,還需要添加主鍵數據                curRecord[idField] = idValue;               //對象若為新建 則新增進數組              if (num == null) {                  idIndexData[idValue] = result.push(curRecord) - 1;              }          }           //數據檢查 由于是將行數據作為列名,則可能會存在部分行缺少其他列數據,若缺少,則指定默認值          for (var i in result) {              for (var name in resultColumns) {                  if (!result[i].hasOwnProperty(name)) result[i][name] = emptyValue;              }          }          return result;      }

完整示例下載

關于JSON數據行轉列的應用是怎樣的就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

皮山县| 岗巴县| 乳山市| 仙居县| 德昌县| 望都县| 梅河口市| 邵东县| 张家港市| 武城县| 双辽市| 民和| 井研县| 萍乡市| 澎湖县| 光泽县| 平安县| 兴城市| 雷山县| 麻阳| 松阳县| 渑池县| 宁陕县| 勃利县| 田东县| 犍为县| 甘孜县| 威信县| 陆川县| 苍溪县| 盐城市| 蒙阴县| 微博| 丰宁| 壤塘县| 渑池县| 逊克县| 玉屏| 高陵县| 莱州市| 南宫市|