博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
每日 30 秒 ⏱ 优雅初始化数组
阅读量:6343 次
发布时间:2019-06-22

本文共 1547 字,大约阅读时间需要 5 分钟。

简介

数组、初始化、快速生成数组、内存泄露

有时候会需要对数组进行一些初始化,最常用到的便是 for 循环:

let num = [];for (let i = 0; i < 10; i++) {    // 做一些其他操作    // 或者返回一些值    num[i] = i;}复制代码

其实有一些简单好用的小技巧可以帮助我们优雅的初始化数组:

Array.from

在支持 ES6 的时候可以利用 Array.from() 来初始化数组:

Array.from({ length: 10 }, (val, index) => {    // 做一些其他操作    // 或者返回一些值    return index;})Array.from(new Array(10), (val, index)=> {    // 做一些其他操作    // 或者返回一些值    return index;});复制代码

Array.apply

在不支持 ES6 的时候可以利用 Array.apply() 来初始化数组:

Array.apply(null, {
length: 10}).map(Function.call, (index, arr) => { // 做一些其他操作 // 或者返回一些值 return index;});const num = Array.apply(null, {
length: 5}).map(Function.call, Number);// 输出 [0, 1, 2, 3, 4]console.log(num)复制代码

spread

当需要快速创建类似 [0, 1, 2, ...N] 这种数组时可以:

const num = [...Array(5).keys()];// 输出 [0, 1, 2, 3, 4]console.log(num)复制代码

Array.fill

利用 new Array 配合 Array.fill 可以快速生成 [0, 0, 0, 0, ...] 这种数组:

const num  = (new Array(5)).fill(0)// 输出: [0, 0, 0, 0, 0]console.log(num)复制代码

清空数组

除了初始化新的数组,对已有的数组进行清空操作也算半个初始化。如果直接对变量赋予新值 list=[] 虽然说以前清空了数组,但是旧值还放在内存之中,没被垃圾回收机制自动回收的话算是 内存泄露 了:

let first = [1,2,3];let second = first;// 清空first = [];// 输出 []console.log(first);// 输出 [1, 2, 3]console.log(second);复制代码

不再用到的内存,没有及时释放,就叫做内存泄漏。

也可以利用 list.length = 0 来进行操作可以销毁掉数组里的所有内容,也将影响到其他引用。例子:

let first = [1,2,3];let second = first;// 清空first.length = 0;// 输出 []console.log(first);// 输出 []console.log(second);复制代码

一起成长

在困惑的城市里总少不了并肩同行的 伙伴 让我们一起成长。

  • 如果您想让更多人看到文章可以点个 点赞
  • 如果您想激励小二可以到 给个 小星星
  • 如果您想与小二更多交流添加微信 m353839115

本文原稿来自

转载于:https://juejin.im/post/5c9eb313f265da30c3477ed5

你可能感兴趣的文章
datatable 获取最大值
查看>>
sqlserver2012一直显示正在还原(Restoring)和从单用户转换成多用户模式(单用户连接中)...
查看>>
spark复习总结02
查看>>
李瑞红201771010111《第九周学习总结》
查看>>
[译]ZOOKEEPER RECIPES-Barriers
查看>>
navicat下载安装和激活一分钟完成
查看>>
6_5 一些有用网址
查看>>
NFC 鏈表操作
查看>>
pymongo模块
查看>>
第0次作业
查看>>
思维导图五个关键秘诀
查看>>
Ubuntu里设置python默认版本为python3(转载)
查看>>
快排+折半查找
查看>>
c# GC 新典型
查看>>
ssh bash 通配符
查看>>
seajs在jquery多个版本下引用jquery的插件的方案
查看>>
关于网络上java,php和.net的“口角之争“的一点想法 !
查看>>
python 第二周(第十三天) 我的python成长记 一个月搞定python数据挖掘!(21) -正则表达式re...
查看>>
[POI2011]SEJ-Strongbox
查看>>
20文件
查看>>