将单个值和数组转换为包含0作为单个值的数组



当我正在寻找一种好方法来检查函数变量是数组还是单个变量,然后将两者转换为数组以进行进一步处理时,我遇到了这篇文章。

@VoteyDisciple提供的答案

var eventsArray = events ? [].concat(events) : [];

对我来说工作得很好,直到events是一个值为零的单个变量。在这种情况下,eventsArray是空的。下面是我的全部代码:

var eventsArray = [];
if (!(Array.isArray(events))) {
eventsArray = events ? [].concat(events) : [];
} else {
eventsArray = events;
}

我试图在else行之前再做一个if语句来抓住这个特殊的场合。但这最终会导致其余代码的混乱,我怀疑它是否非常优雅。因此,我想知道是否可以修改这一行:

eventsArray = events ? [].concat(events) : [];

在某种程度上,如果events是一个值为零的单个变量,这一行也将把这个场合变成一个具有单个元素和值为零的数组?

为了更好地理解,我还想问:为什么这行代码"丢失"了?零,但与任何其他单一值工作得很好?

就简单多了:

eventsArray = Array.isArray(events) ? events : [events];

省略零的原因是零在布尔上下文中是假的,比如条件运算符。您还将丢失null和空字符串。

相关内容

  • 没有找到相关文章

最新更新