JavaScript 批量创建数组的方法

 更新时间:2017年03月22日 08:48:02   作者:tonyinsh  
JavaScript有许多批量创建数组的方法,为了衡量它们的性能,我分别使用不同的方法创建一个长度为100000的数组,且键和值相等,今天小编给大家分享基于js批量创建数组的方法,一起看看吧

JavaScript有许多批量创建数组的方法,为了衡量它们的性能,我分别使用不同的方法创建一个长度为100000的数组,且键和值相等。同时,我定义了下面这个函数用来测量创建数组所耗费的时间:

 function t(fn) {
   var start = Date.now();
   fn.call(this);
   var end = Date.now();
   return (end - start) + 'ms';
}

以下为常用的几个创建数组的方法以及它们所耗费的时间:

使用join和split

该方法把大量时间耗费在了map操作上,去掉map后只需要2ms

使用apply

这里用到了一个{ length: 100000 }伪数组,NodeList和arguments都是伪数组(array-like object),它们都不是真正意义上的数组,而是带有"length属性"并且同时具备"索引属性"的对象,不能直接使用数组的那些方法,而apply和call却可以接受这种伪数组。我们平时在用的Array.prototype.slice( arguments)就是基于这个原理。

这里把长度为100000的伪数组传递给Array函数,构造出了一个长度为100000的数组,然后再用map赋值。有同学可能要问了,为什么不直接Array(100000)生成数组,这是因为通过Array(100000)生成的数组每个值都为undefined,无法通过map遍历。

使用Array.from()

这是ES6新出的方法,可以将伪数组直接转换为数组

如果把伪数组换成数组,速度下降了很多。

使用Array.fill()

先用Array.fill()填充数组,之后再通过map依个赋值

使用for循环

我表示当时就惊呆了,还一直在检查是不是少打个0. 我表示不服,想用push试一下

发现push也好快哦……

比较下来,发现还是最原始的for循环直接赋值的速度最快,其他几个方法速度都差不多。

但for循环写起来实在麻烦,一句话就能搞定的事需要三句才能搞定。

所以,如果对性能没有太大要求的话(毕竟在实际开发中也不会有100000那么大的数组),使用apply和Array.from最方便。

以上所述是小编给大家介绍的JavaScript 批量创建数组的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • uni-app微信小程序使用echarts的详细图文教程

    uni-app微信小程序使用echarts的详细图文教程

    为了兼容小程序Canvas,ECharts提供了一个小程序的组件,用这种方式可以方便地使用ECharts,下面这篇文章主要给大家介绍了关于uni-app微信小程序使用echarts的相关资料,需要的朋友可以参考下
    2022-10-10
  • JS鼠标3次点击事件实现代码及扩展思路

    JS鼠标3次点击事件实现代码及扩展思路

    这篇文章主要介绍了JS鼠标3次点击事件实现及扩展思路,需要的朋友可以参考下
    2017-09-09
  • 微信小程序多表联合查询的实现详解

    微信小程序多表联合查询的实现详解

    小程序设计中,通常会根据业务来做多表的拆分,多表拆分一般是根据业务的特点进行拆分。比如我们在文章关注的业务中,会将文章和关注信息拆分成一对多的表关系。初学者可能对一对一、一对多、多对多的设计概念不是特别清楚
    2022-08-08
  • 每天一篇javascript学习小结(Boolean对象)

    每天一篇javascript学习小结(Boolean对象)

    这篇文章主要介绍了javascript中的Boolean对象知识点,对Boolean对象的基本使用方法进行解释,一段很详细的代码介绍,感兴趣的小伙伴们可以参考一下
    2015-11-11
  • JS图片切换的具体方法(带缩略图版)

    JS图片切换的具体方法(带缩略图版)

    这篇文章介绍了JS图片切换的具体方法,有需要的朋友可以参考一下
    2013-11-11
  • js切换光标示例代码

    js切换光标示例代码

    切换光标的方法有很多,在本文为大家详细介绍下在js中时如何实现的,感兴趣的朋友不要错过
    2013-10-10
  • JavaScript字符串_动力节点Java学院整理

    JavaScript字符串_动力节点Java学院整理

    JavaScript中的字符串就是用''或""括起来的字符表示。下面通过本文给大家介绍JavaScript字符串的相关知识,感兴趣的朋友一起看看吧
    2017-06-06
  • 关于JSON解析的实现过程解析

    关于JSON解析的实现过程解析

    这篇文章主要介绍了关于JSON解析的实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • 详解微信小程序调起键盘性能优化

    详解微信小程序调起键盘性能优化

    这篇文章主要介绍了详解微信小程序调起键盘性能优化,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • js将json格式的对象拼接成复杂的url参数方法

    js将json格式的对象拼接成复杂的url参数方法

    下面小编就为大家带来一篇js将json格式的对象拼接成复杂的url参数方法。小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-05-05

最新评论