紀錄一下,開發上,剛好遇到需要對來源資料,先進行初步過濾,將空值都過濾掉,只留下有用資訊。
如何去除 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))
發表迴響