每日 30 秒 ⏱ 优雅初始化数组

简介

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

有时候会须要对数组进行一些初始化,最经常使用到的即是 for 循环:java

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

其实有一些简单好用的小技巧能够帮助咱们优雅的初始化数组:git

Array.from

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

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, ...] 这种数组:app

const num  = (new Array(5)).fill(0)

// 输出: [0, 0, 0, 0, 0]
console.log(num)
复制代码

清空数组

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

let first = [1,2,3];
let second = first;

// 清空
first = [];

// 输出 []
console.log(first);

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

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

也能够利用 list.length = 0 来进行操做能够销毁掉数组里的全部内容,也将影响到其余引用。例子:code

let first = [1,2,3];
let second = first;

// 清空
first.length = 0;

// 输出 []
console.log(first);

// 输出 []
console.log(second);
复制代码

一块儿成长

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

  • 若是您想让更多人看到文章能够点个 点赞
  • 若是您想激励小二能够到 Github 给个 小星星
  • 若是您想与小二更多交流添加微信 m353839115

微信公众号

本文原稿来自 PushMeTop

相关文章
相关标签/搜索