资讯专栏INFORMATION COLUMN

用 new Function 提高运行效率

kid143 / 652人阅读

为了减小列表数据的尺寸,后端把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 倍

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/100151.html

相关文章

  • [ JS 进阶 ] 如何改进代码性能 (3)

    摘要:这样就改进了代码的性能,看代码将保存在局部变量中所以啊,我们在开发中,如果在函数中会经常用到全局变量,把它保存在局部变量中避免使用语句用语句延长了作用域,查找变量同样费时间,这个我们一般不会用到,所以不展开了。 本来在那片编写可维护性代码文章后就要总结这篇代码性能文章的,耽搁了几天,本来也是决定每天都要更新一篇文章的,因为以前欠下太多东西没总结,学过的东西没去总结真的很快就忘记了...

    young.li 评论0 收藏0
  • 你不知道的Virtual DOM(五):自定义组件

    摘要:现在流行的前端框架都支持自定义组件,组件化开发已经成为提高前端开发效率的银弹。二对自定义组件的支持要想正确的渲染组件,第一步就是要告诉某个标签是自定义组件。下面的例子里,就是一个自定义组件。解决了识别自定义标签的问题,下一步就是定义标签了。 欢迎关注我的公众号睿Talk,获取我最新的文章:showImg(https://segmentfault.com/img/bVbmYjo); 一、...

    lk20150415 评论0 收藏0
  • 开发工具心得:如何 10 倍提高你的 Webpack 构建效率

    摘要:在项目架构中这两个东西基本成为了标配,但的模块必须在使用前经过的构建后文称为才能在浏览器端使用,而每次修改也都需要重新构建后文称为才能生效,如何提高的构建效率成为了提高开发效率的关键之一。 0. 前言 showImg(https://segmentfault.com/img/remote/1460000005770045); 图1:ES6 + Webpack + React + Bab...

    用户83 评论0 收藏0
  • 写Laravel测试代码(一)

    摘要:在中可以在设置数据库重装操作这样就可以在每一个中定义本次污染的数据表,保证下一个在运行前重刷下被污染的数据表,如这样会极大提高数据库测试效率,不推荐使用给出的和,效率并不高。 本文主要探讨写数据库测试。 写laravel程序时,除了写生产代码,还需要写测试代码。其中,写数据库测试比较麻烦,因为需要针对每一个test case需要建立好数据集,该次test case污染的数据表还需要恢复...

    MageekChiu 评论0 收藏0
  • 从零开始写一个npm包,一键生成react组件(偷懒==提高效率)

    摘要:后言有了我们可以做很多很多的事情以后开发新模块的时候就可以偷懒了纯手打给个赞可好模版 前言 最近写项目开发新模块的时候,每次写新模块的时候需要创建一个组件的时候(包含组件css,index.js,组件js),就只能会拷贝其他组件修改名称 ,但是写了1-2个后发现效率太低了,而且极容易出错,所以自己写一个npm包来减少工作量,下面就一步一步来创建一个属于自己的npm仓库 首先第一步创建一...

    Labradors 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<