将单个值转换为数组

krl*_*krl 3 javascript underscore.js lodash

在我的项目中,我经常发现自己检查一个值是否是一个数组。

如果该值不是数组,我会从中创建一个单元素数组。

如果值为undefinedor null,我创建一个空数组。

值本身通常是一个对象数组或单个对象或 undefined

const array = value ? (Array.isArray(value) ? value: [value]) : [];
Run Code Online (Sandbox Code Playgroud)

在我决定将其分解为单独的 util 函数之前,是否有更简洁的方法(可能使用lodash或underscore)?

Vot*_*ple 6

你可以做

var eventsArray = events ? [].concat(events) : [];
Run Code Online (Sandbox Code Playgroud)

该.concat()函数接受数组和单个参数,因此无论哪种方式,您都可以得到您想要的。


Dar*_*han 5

由于您在代码中使用 const 我假设您使用的是 ES2015 / ES6。ES1015 的 默认函数参数允许在没有传递值或未定义的情况下使用默认值初始化形式参数。

function abc(value = []) {

  const array =  Array.isArray(value) ? value: [value];

}
Run Code Online (Sandbox Code Playgroud)