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