Как определить, является ли переменная массивом в JavaScript?

Привет, ребята! Я новичок в JavaScript и столкнулся с проблемой. Мне нужно проверить, является ли переменная массивом. Я пробовал разные способы, но не уверен, какой из них правильный и наиболее эффективный.

Вот один из вариантов, который я нашел:

if (typeof myVariable === 'object' && myVariable.length !== undefined) {
  console.log('Это массив');
}

Но я слышал, что есть и другие методы. Может кто-нибудь подсказать, как лучше всего это сделать? Буду очень благодарен за помощь и объяснение!

мой способ - использовать instanceof Array. он быстрый и четкий:

if (myVariable instanceof Array) {
console.log(‘массив’);
} else {
console.log(‘не массив’);
}

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

Ребят, а почему никто не упомянул Object.prototype.toString.call()? Это мой любимый способ:

if (Object.prototype.toString.call(myVariable) === ‘[object Array]’) {
console.log(‘массив’);
}

Работает даже с разными контекстами выполнения. Правда, синтаксис немного сложноват, но зато надежно. Кто-нибудь еще использует этот метод? Какие подводные камни видите?

для проверки массива лучше использовать метод Array.isArray(). он специально для этого создан и работает надежно. вот пример:

if (Array.isArray(myVariable)) {
  console.log('это массив');
} else {
  console.log('это не массив');
}

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