数组、初始化、快速生成数组、内存泄露
有时候会须要对数组进行一些初始化,最经常使用到的即是 for 循环:javascript
let num = []; for (let i = 0; i < 10; i++) { // 作一些其余操做 // 或者返回一些值 num[i] = i; }
其实有一些简单好用的小技巧能够帮助咱们优雅的初始化数组:java
在支持 ES6 的时候能够利用 Array.from()
来初始化数组:git
Array.from({ length: 10 }, (val, index) => { // 作一些其余操做 // 或者返回一些值 return index; }) Array.from(new Array(10), (val, index)=> { // 作一些其余操做 // 或者返回一些值 return index; });
在不支持 ES6 的时候能够利用 Array.apply()
来初始化数组:github
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)
当须要快速建立相似 [0, 1, 2, ...N] 这种数组时能够:数组
const num = [...Array(5).keys()]; // 输出 [0, 1, 2, 3, 4] 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
来进行操做能够销毁掉数组里的全部内容,也将影响到其余引用。例子:app
let first = [1,2,3]; let second = first; // 清空 first.length = 0; // 输出 [] console.log(first); // 输出 [] console.log(second);
在困惑的城市里总少不了并肩同行的
伙伴
让咱们一块儿成长。
点赞
。小星星
。m353839115
。本文原稿来自 PushMeTop