為了減小列表數據的尺寸,后端把json處理成數組返回(類似于csv)。格式如下:
[ ["basqty","brandfullname","fullname","gid"], [470,"金富士","【今日爆款】#金富士土斯動物餅干香蕉牛奶味50g",43945919], [470,"金富士","【今日爆款】#金富士土斯動物餅干香蕉牛奶味50g",43945919], ... ]
前端獲取到數據后解析,格式如下:
[ { "basqty":470, "brandfullname":"金富士", "fullname":"【今日爆款】#金富士土斯動物餅干香蕉牛奶味50g", "gid":"【今日爆款】#金富士土斯動物餅干香蕉牛奶味50g" }, { "basqty":470, "brandfullname":"金富士", "fullname":"【今日爆款】#金富士土斯動物餅干香蕉牛奶味50g", "gid":"【今日爆款】#金富士土斯動物餅干香蕉牛奶味50g" }, ... ]
優化前正常的解析代碼:
function array2json(array) { var keys = array.shift(); return array.length ? array.map(function (ary) { var row= {}; keys.forEach(function (key, i) { row[key] = ary[i] }) return row }) : [] }
運行一個 24000 行,每行 94 個字段的數組,大概需要 400 毫秒
優化思路:省去中間 forEach 遍歷賦值
function array2json(array) { var keys = array.shift(); return array.length ? array.map(function (ary) { //如果能夠省去中間 forEach 遍歷賦值效率會高很多 return { "basqty":ary[0], "brandfullname":ary[1], ... } }) : [] }
用 new Function 來構造中間的 return 對象
function listArrayTolistJson(array) { var keys = array.shift(); return array.length ? array.map(new Function("ary", "return {" + keys.map(function (key, i) { return """ + key + "":ary[" + i + "]" }).join(",") + "}")) : [] }
運行截圖,大概快了 7 倍
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/100151.html
摘要:這樣就改進了代碼的性能,看代碼將保存在局部變量中所以啊,我們在開發中,如果在函數中會經常用到全局變量,把它保存在局部變量中避免使用語句用語句延長了作用域,查找變量同樣費時間,這個我們一般不會用到,所以不展開了。 本來在那片編寫可維護性代碼文章后就要總結這篇代碼性能文章的,耽擱了幾天,本來也是決定每天都要更新一篇文章的,因為以前欠下太多東西沒總結,學過的東西沒去總結真的很快就忘記了...
摘要:現在流行的前端框架都支持自定義組件,組件化開發已經成為提高前端開發效率的銀彈。二對自定義組件的支持要想正確的渲染組件,第一步就是要告訴某個標簽是自定義組件。下面的例子里,就是一個自定義組件。解決了識別自定義標簽的問題,下一步就是定義標簽了。 歡迎關注我的公眾號睿Talk,獲取我最新的文章:showImg(https://segmentfault.com/img/bVbmYjo); 一、...
摘要:在項目架構中這兩個東西基本成為了標配,但的模塊必須在使用前經過的構建后文稱為才能在瀏覽器端使用,而每次修改也都需要重新構建后文稱為才能生效,如何提高的構建效率成為了提高開發效率的關鍵之一。 0. 前言 showImg(https://segmentfault.com/img/remote/1460000005770045); 圖1:ES6 + Webpack + React + Bab...
摘要:在中可以在設置數據庫重裝操作這樣就可以在每一個中定義本次污染的數據表,保證下一個在運行前重刷下被污染的數據表,如這樣會極大提高數據庫測試效率,不推薦使用給出的和,效率并不高。 本文主要探討寫數據庫測試。 寫laravel程序時,除了寫生產代碼,還需要寫測試代碼。其中,寫數據庫測試比較麻煩,因為需要針對每一個test case需要建立好數據集,該次test case污染的數據表還需要恢復...
摘要:后言有了我們可以做很多很多的事情以后開發新模塊的時候就可以偷懶了純手打給個贊可好模版 前言 最近寫項目開發新模塊的時候,每次寫新模塊的時候需要創建一個組件的時候(包含組件css,index.js,組件js),就只能會拷貝其他組件修改名稱 ,但是寫了1-2個后發現效率太低了,而且極容易出錯,所以自己寫一個npm包來減少工作量,下面就一步一步來創建一個屬于自己的npm倉庫 首先第一步創建一...
閱讀 3234·2021-11-18 10:02
閱讀 1936·2021-09-22 10:54
閱讀 2989·2019-08-30 15:43
閱讀 2576·2019-08-30 13:22
閱讀 1575·2019-08-29 13:57
閱讀 1041·2019-08-29 13:27
閱讀 731·2019-08-26 14:05
閱讀 2512·2019-08-26 13:30