JS 裡怎麼給陣列填充預設值

2021-09-18 00:15:49 字數 844 閱讀 4667

今天看到一段**:

這**的寫法無法讓人一下理解它的意圖。

google 之後知道它的作用是構造乙個長度為 30 的陣列,預設值是 4。

但是為什麼要寫得這麼彆扭呢?我們來分解下它每一步在做什麼:

這一段**生成乙個長度為30的陣列,裡面的值都是undefined

之後的.map(() => 4):負責填充預設值

檢視文件 可以看到 array 的建構函式語法,可以得知 array 支援兩種構造方式。使用引數形式給定 n 個陣列元素,或者給定乙個陣列長度。

不過比較重要的一點文件裡沒提到,使用new array(arraylength)方式構造的陣列是乙個稀疏陣列,裡面是沒有任何值的,只有長度。所以這個方式構造出來的陣列是無法遍歷的,也就無法用 map 遍歷填充值了。

知道了上述的原因,我們就能理解:

array(null,null,null......))

這樣最終就會得到乙個陣列,這樣就不是稀疏陣列了,裡面是有值的,雖然是 undefined。

[ undefined, undefined, undefined ......]

總結下,其實就是 js 的 array 的預設建構函式生成的是稀疏陣列,是無法用 map 遍歷填充的。所以才寫得這麼繞。

不過,說了這麼多,要實現原本的需求,其實有更簡單的方法啦:

array(30).fill(4)
fill 方法的說明

Python 裡給字典設定預設值

我們都知道,在 python 的字典裡邊,如果 key 不存在的話,通過 key 去取值是會報錯的。aa aa c traceback most recent call last file line 1,in keyerror c 如果我們在取不到值的時候不報錯而是給定乙個預設值的話就友好多了。fr...

解構給預設值 解構賦值預設值誤區

問題還原 這是最近 cr 的時候在業務 中發現了乙個問題,先來看一下問題 data 為介面返回的資料 const total 0 data.result const list bizobject.list 其他邏輯,比如把 list 更新到 state 中,等等 a 介面正常的情況 data 中有 ...

給oracle設預設值default,

oracle 日期調置預設值 建立時定義 create table tabname date1 date default sysdate create table tabname 字段 date default sysdate 或 建立後再修改 alter table tabname modify ...