紀錄工作經驗、相關知識,解決技術相關問題。

Javascript, React, 工作雜談, 新手 Jamp Holes, 未分類, 網站相關

JS去除 array 中 null 或空值

紀錄一下,開發上,剛好遇到需要對來源資料,先進行初步過濾,將空值都過濾掉,只留下有用資訊。

如何去除 array null 空值

假設你有一筆資料,長得像這樣

const a = [
  null,
  null,
  1,
  2,
  3,
  null,
  10
]

你希望將該資料中的null 清除,可以這樣做

a.filter(e => e)

也因為主要只是要過濾null,因此改用 Boolean ,利用 null 在 Boolean中等同於 false,來達到資料過濾的目的。

a.filter(Boolean)

去除多維陣列 array 中不規則的 null 空值

資料再複雜一點呢? 你可以這樣

const a = [
  null,
  null,
  [
    {a:1, b:2},
    null,null,null,null,
    5,
  ],
  [
    {a:11, b:22},
    10,
  ],
  [
    {a:111, b:222},
    123,
    456,
    null,null,
    5,
    null,null,
  ],
  null,
  10
]

a.filter(Boolean).map(e => Array.isArray(e) ? e.filter(Boolean) : e)

思路上,先對外層做一次,再用map 跑回圈,再針對裡面那層資料進行過濾。

比較值得要注意的是,再不規則的陣列資料中,你需要先判斷該資料是否是陣列,不然容易產生錯誤。

結論

最後,假如你很多地方都得使用,你也可以將過濾的邏輯,獨立出來成一個function,再直接呼叫,如下

const a = [
  null,
  null,
  [
    {a:1, b:2},
    null,null,null,null,
    5,
  ],
  [
    {a:11, b:22},
    10,
  ],
  [
    {a:111, b:222},
    123,
    456,
    null,null,
    5,
    null,null,
  ],
  null,
  10
]

const removeNull = (data) => {
  return Array.isArray(data) ? data.filter(Boolean) : data
}

removeNull(a).map(e => removeNull(e))

發表迴響