Javascript 将单个值转换为数组

Javascript 将单个值转换为数组,javascript,underscore.js,lodash,Javascript,Underscore.js,Lodash,在我的项目中,我经常检查一个值是否是数组 如果该值不是数组,我将从中创建一个元素数组 如果值为未定义或空,我将创建一个空数组 值本身通常是一个对象数组或单个对象或未定义的 const array = value ? (Array.isArray(value) ? value: [value]) : []; 在我决定将其分解为一个单独的util函数之前,有没有更简洁的方法(可能是使用lodash或下划线)执行此操作?您可以这样做 var eventsArray = events ? [].con

在我的项目中,我经常检查一个值是否是数组

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

如果值为
未定义
,我将创建一个空数组

值本身通常是一个对象数组或单个对象或
未定义的

const array = value ? (Array.isArray(value) ? value: [value]) : [];
在我决定将其分解为一个单独的util函数之前,有没有更简洁的方法(可能是使用
lodash
下划线
)执行此操作?

您可以这样做

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

.concat()
函数同时接受数组和单个参数,因此无论哪种方式,最终都会得到所需的参数。

由于您在代码中使用const,我假设您使用的是ES2015/ES6。ES1015的 如果未传递值或未定义,则允许使用默认值初始化形式参数

function abc(value = []) {

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

}

这是一个使用lodash的解决方案,所有这些都包在一个

用法:

_.asArray(null)      -> []
_.asArray(undefined) -> []
_.asArray(0)         -> [0]
_.asArray(false)     -> [false]
_.asArray([1,2,3])   -> [1,2,3]
_.asArray('wibble')  -> ['wibble']

如果您使用ES6,您可以执行以下操作,它比
.concat()
更干净


若传递未定义或null,则value参数设置为空array@RolandStarke在我的情况下,我想要[],而不是[null]@Darshan null将导致[null]
_.asArray(null)      -> []
_.asArray(undefined) -> []
_.asArray(0)         -> [0]
_.asArray(false)     -> [false]
_.asArray([1,2,3])   -> [1,2,3]
_.asArray('wibble')  -> ['wibble']
function method(value = []) {
  const array = [...value];
}