成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

用 new Function 提高運行效率

kid143 / 690人閱讀

為了減小列表數(shù)據(jù)的尺寸,后端把json處理成數(shù)組返回(類似于csv)。格式如下:

[
    ["basqty","brandfullname","fullname","gid"],
    [470,"金富士","【今日爆款】#金富士土斯動物餅干香蕉牛奶味50g",43945919],
    [470,"金富士","【今日爆款】#金富士土斯動物餅干香蕉牛奶味50g",43945919],
    ...
]

前端獲取到數(shù)據(jù)后解析,格式如下:

[
    {
        "basqty":470,
        "brandfullname":"金富士",
        "fullname":"【今日爆款】#金富士土斯動物餅干香蕉牛奶味50g",
        "gid":"【今日爆款】#金富士土斯動物餅干香蕉牛奶味50g"
    },
    {
        "basqty":470,
        "brandfullname":"金富士",
        "fullname":"【今日爆款】#金富士土斯動物餅干香蕉牛奶味50g",
        "gid":"【今日爆款】#金富士土斯動物餅干香蕉牛奶味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
    }) : []
}

運行一個 24000 行,每行 94 個字段的數(shù)組,大概需要 400 毫秒

優(yōu)化思路:省去中間 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 來構(gòu)造中間的 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 倍

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/100151.html

相關(guān)文章

  • [ JS 進階 ] 如何改進代碼性能 (3)

    摘要:這樣就改進了代碼的性能,看代碼將保存在局部變量中所以啊,我們在開發(fā)中,如果在函數(shù)中會經(jīng)常用到全局變量,把它保存在局部變量中避免使用語句用語句延長了作用域,查找變量同樣費時間,這個我們一般不會用到,所以不展開了。 本來在那片編寫可維護性代碼文章后就要總結(jié)這篇代碼性能文章的,耽擱了幾天,本來也是決定每天都要更新一篇文章的,因為以前欠下太多東西沒總結(jié),學過的東西沒去總結(jié)真的很快就忘記了...

    young.li 評論0 收藏0
  • 你不知道的Virtual DOM(五):自定義組件

    摘要:現(xiàn)在流行的前端框架都支持自定義組件,組件化開發(fā)已經(jīng)成為提高前端開發(fā)效率的銀彈。二對自定義組件的支持要想正確的渲染組件,第一步就是要告訴某個標簽是自定義組件。下面的例子里,就是一個自定義組件。解決了識別自定義標簽的問題,下一步就是定義標簽了。 歡迎關(guān)注我的公眾號睿Talk,獲取我最新的文章:showImg(https://segmentfault.com/img/bVbmYjo); 一、...

    lk20150415 評論0 收藏0
  • 開發(fā)工具心得:如何 10 倍提高你的 Webpack 構(gòu)建效率

    摘要:在項目架構(gòu)中這兩個東西基本成為了標配,但的模塊必須在使用前經(jīng)過的構(gòu)建后文稱為才能在瀏覽器端使用,而每次修改也都需要重新構(gòu)建后文稱為才能生效,如何提高的構(gòu)建效率成為了提高開發(fā)效率的關(guān)鍵之一。 0. 前言 showImg(https://segmentfault.com/img/remote/1460000005770045); 圖1:ES6 + Webpack + React + Bab...

    用戶83 評論0 收藏0
  • 寫Laravel測試代碼(一)

    摘要:在中可以在設(shè)置數(shù)據(jù)庫重裝操作這樣就可以在每一個中定義本次污染的數(shù)據(jù)表,保證下一個在運行前重刷下被污染的數(shù)據(jù)表,如這樣會極大提高數(shù)據(jù)庫測試效率,不推薦使用給出的和,效率并不高。 本文主要探討寫數(shù)據(jù)庫測試。 寫laravel程序時,除了寫生產(chǎn)代碼,還需要寫測試代碼。其中,寫數(shù)據(jù)庫測試比較麻煩,因為需要針對每一個test case需要建立好數(shù)據(jù)集,該次test case污染的數(shù)據(jù)表還需要恢復...

    MageekChiu 評論0 收藏0
  • 從零開始寫一個npm包,一鍵生成react組件(偷懶==提高效率)

    摘要:后言有了我們可以做很多很多的事情以后開發(fā)新模塊的時候就可以偷懶了純手打給個贊可好模版 前言 最近寫項目開發(fā)新模塊的時候,每次寫新模塊的時候需要創(chuàng)建一個組件的時候(包含組件css,index.js,組件js),就只能會拷貝其他組件修改名稱 ,但是寫了1-2個后發(fā)現(xiàn)效率太低了,而且極容易出錯,所以自己寫一個npm包來減少工作量,下面就一步一步來創(chuàng)建一個屬于自己的npm倉庫 首先第一步創(chuàng)建一...

    Labradors 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<