每日 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

相關文章
相關標籤/搜索