我有一个数组,我想将空/未定义的值转换为null。我已经尝试了以下方法:
let arr = []
arr[1] = 2
arr[7] = 10
arr = arr.map(x => x || null)
console.log(arr)
但是代码段的输出并不理想:
[
undefined,
2,
undefined,
undefined,
undefined,
undefined,
undefined,
10
]
如何将这些未定义的值替换为空值?
注:普通JS和Lodash答案均可接受。
2条答案
按热度按时间e3bfsja21#
您所得到的结果适用于其中包含
undefined
元素的数组,但不适用于其中包含空洞的稀疏数组,因为map
不会访问稀疏数组中的空洞;相反,所得到的阵列只是在相同的位置具有孔。如果还想Map孔,可以使用
Array.from
及其Map回调函数:与
map
不同,Array.from
将遍历数组的所有索引(包括洞),将undefined
作为数组中洞的x
传递给Map回调。另一个选择是简单的
for-of
循环,因为迭代访问稀疏数组中的洞(这就是上面Array.from
工作的原因):请注意,
x || null
会将所有falsy值替换为null
(包括0
和""
,这经常会使人出错)。要只替换undefined
,请使用x ?? null
:或
x ?? y
(nullish coalescing)类似于x || y
,但仅当x
的计算结果为undefined
或null
时,才使用y
。hgc7kmma2#
尝试一些非常基本的东西:
输出量: