При роботі з JavaScript, часто виникає необхідність перевірити, чи є змінна масивом чи ні. Ця перевірка може бути корисною, наприклад, для додавання елементів до масиву, виконання циклів або перевірки типів даних. Існує кілька способів перевірити, чи є змінна масивом, і в цій статті ми розглянемо деякі з них.
Один з найпростіших способів перевірки-використання методу Array.isArray(). Цей метод дозволяє визначити, чи є змінна масивом чи ні. Він повертає логічне значення true, якщо змінна - масив, і false - якщо ні. Код, який використовує цей метод, може виглядати наступним чином:
Ще одним способом перевірки є використання оператора typeof. Якщо змінна є масивом, то оператор typeof поверне значення "object". Однак, цей спосіб ненадійний, так як typeof також може повернути "object" для інших типів даних, таких як об'єкти і нульові значення.
Отже, перевірити, чи є змінна масивом у JavaScript, можна за допомогою методу Array.isArray () або оператора typeof. Рекомендується використовувати метод Array.isArray (), оскільки він є найбільш надійним і надає чітку інформацію про тип даних змінної.
JavaScript: перевірка, чи є змінна масивом
1. Використання методу Array.isArray()
Найпростіший і надійний спосіб перевірити, чи є змінна масивом, - це використовувати вбудований метод Array.isArray() . Цей метод приймає один аргумент і повертає значення true , якщо аргумент є масивом, і false в іншому випадку.
var arr = [1, 2, 3];var isArr = Array.isArray(arr); // truevar str = "Hello";var isArr2 = Array.isArray(str); // false
2. Перевірка за допомогою оператора typeof
Інший спосіб перевірити, чи є змінна масивом, - це використовувати оператор typeof . Однак, оператор typeof повертає значення "object" для всіх об'єктів, включаючи і масиви. Тому, для достовірної перевірки необхідно спочатку переконатися, що змінна є об'єктом, а потім додатково перевірити, що змінна не є функцією.
var arr = [1, 2, 3];var isArr = typeof arr === "object" && arr !== null && !Array.isArray(arr) && typeof arr !== "function"; // truevar str = "Hello";var isArr2 = typeof str === "object" && str !== null && !Array.isArray(str) && typeof str !== "function"; // false
3. Перевірка за допомогою індексу length та методу push()
Ще один спосіб перевірити, чи є змінна масивом, це перевірити, що змінна має властивість length і має метод push() , який використовується для додавання елементів до масиву.
var arr = [1, 2, 3];var isArr = arr.hasOwnProperty("length") && typeof arr.push === "function"; // truevar str = "Hello";var isArr2 = str.hasOwnProperty("length") && typeof str.push === "function"; // false
Використовуючи один із цих методів, ви можете легко перевірити, чи є змінна масивом і продовжувати працювати з нею відповідно до логіки вашої програми.
Спосіб 1: Array.isArray()
Приклад використання методу Array.isArray() :
var arr = [1, 2, 3];console.log(Array.isArray(arr)); // truevar obj = ;console.log(Array.isArray(obj)); // false
У першому прикладі змінна arr є масивом, тому метод Array.isArray () повертає значення true .
У другому прикладі змінна obj не є масивом, тому метод Array.isArray () повертає значення false .
Метод Array.isArray () є надійним способом перевірки типу змінної в JavaScript і рекомендується до використання.
Спосіб 2: typeof та дизайн if
Для цього ми можемо використовувати конструкцію if. Якщо тип змінної дорівнює "object" і змінна має властивість length, то ми можемо зробити припущення, що ця змінна є масивом. Далі можна додати додаткові перевірки для підтвердження цього припущення.
Нижче наведено приклад коду, який демонструє використання typeof та конструкції if для перевірки, чи є змінна масивом:
if (typeof myVariable === "object" && myVariable.hasOwnProperty("length"))/ Переменная является массивом> else/ Переменная не является массивом>
У цьому прикладі ми спочатку перевіряємо, що тип змінної дорівнює "object". Потім ми перевіряємо, що змінна має властивість length за допомогою методу hasOwnProperty(). Якщо обидві умови виконуються, то ми можемо бути впевнені, що змінна є масивом.
Отже, метод 2-це простий спосіб перевірити, чи є змінна масивом за допомогою typeof та конструкції if.
Спосіб 3: instanceof та конструктор Array
Оператор instanceof перевіряє, чи належить об'єкт певному прототипу. У цьому випадку ми перевіряємо, чи належить змінна до прототипу Array .
let arr = [1, 2, 3];let isArr = arr instanceof Array;console.log(isArr); // truelet str = "Hello";let isStrArr = str instanceof Array;console.log(isStrArr); // false
У цьому прикладі змінна arr є масивом і належить до прототипу Array, тому результатом буде true . A змінна str є рядком і не належить до прототипу Array , тому результат буде false .
Однак, варто відзначити, що даний метод може бути ненадійним в певних випадках. Наприклад:
let obj = ;let isObjArr = obj instanceof Array;console.log(isObjArr); // false
У цьому прикладі змінна obj не є масивом, однак вона має властивість length , яку мають масиви. Однак перевірка за допомогою instanceof поверне неправильний результат.
Метод 4: Object.prototype.toString()
Для перевірки типу змінної на масив застосовується наступний код:
typeof variable === 'object' && Object.prototype.toString.call(variable) === '[object Array]'
У цьому випадку ми спочатку перевіряємо, чи є змінна об'єктом, а потім використовуємо метод toString() за допомогою методу call(). Якщо результат виклику toString () дорівнює '[object Array]', це означає, що змінна є масивом.
Нижче наведено приклад коду:
let variable = [1, 2, 3];console.log(typeof variable === 'object' && Object.prototype.toString.call(variable) === '[object Array]'); // truevariable = 'Hello, world!';console.log(typeof variable === 'object' && Object.prototype.toString.call(variable) === '[object Array]'); // false
Метод Object.prototype.toString () - це універсальний спосіб перевірити тип об'єкта, тому його можна використовувати не тільки для перевірки масивів, але й для інших типів змінних.
Спосіб 5: через індексування елемента
це спробувати звернутися до елемента за його індексом і перевірити, чи існує він.
Якщо елемент існує, значить змінна є масивом. Давайте розглянемо приклад:
const variable = [1, 2, 3];if (variable[0] !== undefined)else
У цьому прикладі ми намагаємося звернутися до елемента масиву з індексом 0.
Якщо елемент не існує, то змінна не є масивом.
Однак цей метод не є надійним, оскільки можливо, що деякі значення в масиві
також можуть бути undefined. Тому рекомендується використовувати інші методи перевірки
для досягнення більш точного результату.