Перевірка, чи масив пустий або не існує. JS
Як найкраще перевірити, чи масив порожній або не існує?
Щось на зразок цього?
if(array.length < 1 || array == undefined){
//empty
}
316
1
Як найкраще перевірити, чи масив порожній або не існує?
Щось на зразок цього?
if(array.length < 1 || array == undefined){
//empty
}
Спочатку потрібно зробити перевірку на
undefined
. Якщо зробити навпаки, то буде видаватись помилка, якщо масив не визначений.Оновлення
Цій відповіді приділяється досить багато уваги, тому я хотів би зазначити, що моя початкова відповідь, перш за все, стосувалася неправильного порядку умов, які оцінюються у запитанні. У цьому сенсі вона не враховує декілька сценаріїв, таких як "нульові" значення, інші типи об'єктів з властивістю "довжина" тощо. Це також не дуже ідіоматичний JavaScript.
**Підхід, що захищає від дурня Надихнувшись коментарями, нижче наведено те, що я вважаю на даний момент надійним способом перевірки того, чи є масив порожнім або не існує. Він також враховує, що змінна може посилатися не на масив, а на якийсь інший тип об'єкта з властивістю
length
.Розбити на частини:
Array.isArray()
, що не дивно, перевіряє, чи є її аргумент масивом. При цьому відсіюються значення типуnull
,undefined
і все інше, що не є масивом.Зверніть увагу, що це також усуне масивоподібні об'єкти, такі як об'єкт
arguments
і об'єкти DOMNodeList
. Залежно від вашої ситуації, це може бути не та поведінка, яка вам потрібна.Умова
array.length
перевіряє, чи властивістьlength
змінної набуває значення truthy. Оскільки попередня умова вже встановила, що ми дійсно маємо справу з масивом, більш суворі порівняння на кшталтarray.length != 0
абоarray.length !== 0
тут не потрібні.**Прагматичний підхід У багатьох випадках описане вище може здатися надмірністю. Можливо, ви використовуєте мову вищого порядку, таку як TypeScript, яка виконує більшу частину перевірки типів за вас під час компіляції, або вам дійсно все одно, чи є об'єкт насправді масивом, чи просто схожим на масив.
У цих випадках я схиляюся до наступного, більш ідіоматичного JavaScript:
Або, частіше, його обернений варіант: