如何根据可用性生成数组,过滤undefined仅保留有效年份
过滤年份数组中的Undefined元素解决方案
方法1:直接过滤现有数组
你可以使用filter()方法结合Boolean函数,一键移除数组中所有 falsy 值(包括undefined):
const preAuthAvailabilityYears = [ currentYearAvailability ? currentYear : undefined, previousYearAvailability ? previousYear : undefined, previousLastYearAvailability ? previousLastYear : undefined, ].filter(Boolean);
Boolean在这里作为回调函数,会对undefined返回false,从而将这类元素从结果数组中排除。
方法2:构建数组时避免加入Undefined
另一种更直接的方式是,仅当对应年份的可用状态为真时,才将年份推入数组,从根源上避免产生undefined:
const preAuthAvailabilityYears = []; if (currentYearAvailability) preAuthAvailabilityYears.push(currentYear); if (previousYearAvailability) preAuthAvailabilityYears.push(previousYear); if (previousLastYearAvailability) preAuthAvailabilityYears.push(previousLastYear);
这种方式逻辑清晰,不需要后续的数组清理操作。
原理说明
filter(Boolean)利用了JavaScript的类型转换特性:undefined属于假值,会被自动过滤。- 基于push的方法只添加有效年份,数组自始至终不会包含无效元素。
两种方法都能得到仅包含可用年份的数组。
内容的提问来源于stack exchange,提问作者Siva Sai
相关产品推荐
相关产品推荐

