2015-03-16 4 views
1

В нескольких языках, это довольно часто, чтобы написать метод, который принимает либо массив, либо один объект:Как создать массив с одним элементом или массивом элементов?

Ex в Ruby:

def sum(array_or_single_element) 
    # converts into array if single element, remains the same otherwise 
    array = Array(array_or_single_element) 
    array.reduce(:+) 
end 

У меня есть чувство Lodash здесь, чтобы обеспечить это тип утилиты для JS. Но такой метод не предусмотрен.

  • Действительно ли это отсутствует?
  • Является ли это настолько противоречивым в JS (в этом случае я его пропустил), так что ему не нужно быть в рамках?

Я не очень люблю писать

if (typeof array === 'Array') { 
    // 
} 

ответ

0

Вы можете использовать Array.prototype.concat, как этого

console.log([].concat(0)); 
// [ 0 ] 
console.log([].concat([1, 2, 3])); 
// [ 1, 2, 3 ] 
console.log([].concat("thefourtheye")); 
// [ 'thefourtheye' ] 

Мы сцепить все элементы, которые мы хотим, с пустым массивом. Таким образом, даже если наши исходные данные являются всего лишь одним элементом, он будет частью нового массива.

+0

Ницца, не знал, что concat может работать с одним элементом! –