拼接Session Storage解析数据时,如何自动移除空值避免报错?
解决Session Storage解析数据合并时的空值问题
你可以通过批量处理+过滤空值的方式解决这个问题,不用逐个检查每个变量,具体实现如下:
优化后的代码
// 把需要读取的key统一放到数组里,避免重复代码 const dataKeys = ['data1', 'data2', 'data3', 'data4', 'data5']; // 批量解析sessionStorage中的数据 const parsedDataList = dataKeys.map(key => JSON.parse(sessionStorage.getItem(key))); // 过滤掉null/undefined这类空值,再合并所有有效数组 const ArrayConcatSession = parsedDataList.filter(Boolean).flat();
代码说明
- 批量解析:将所有需要读取的key存入数组,用
map循环解析,避免重复写五次JSON.parse(sessionStorage.getItem()),更简洁易维护。 - 过滤空值:
filter(Boolean)会自动剔除null、undefined这类假值——当sessionStorage中没有对应key时,getItem返回null,JSON.parse后还是null,这类值会被过滤掉,避免展开时报错。 - 合并数组:
flat()方法会将过滤后的数组列表展开合并成一个一维数组,效果和你原来的[...d1, ...d2,...]一致。
如果你的场景中需要过滤空数组(比如解析后是[]也想移除),可以把过滤条件改成:
parsedDataList.filter(item => item?.length > 0)
这样就能确保只有非空的有效数组才会被合并。
内容的提问来源于stack exchange,提问作者Strywyr
相关产品推荐
相关产品推荐

