@Romantik1991

Как проверить, пустой ли массив в Javascript, и, если он пустой, то создать его?

Как проверить, пустой ли массив в Javascript, и, если он пустой, то создать его?
что-то вроде этого
if(confCaros.length == 0){confCaros = new Array();}else {
  • Вопрос задан
  • 27419 просмотров
Пригласить эксперта
Ответы на вопрос 7
@Quilin
Full-stack разработчик
Можно написать как-то покороче, ИМХО:

arr = arr || [];

Это, конечно, попахивает немного, но для сведущих в JS код вполне прозрачный.
Ответ написан
VoidVolker
@VoidVolker Куратор тега JavaScript
Dark side eye. А у нас печеньки! А у вас?
Если переменная является массивом - то незачем создавать еще один массив, т.к. разницы между двумя пустыми массивами нет никакой.
Возможно автор хочет провести проверку "это массив"? Проверить, является ли переменная(объект) массивом можно например так:
Object.prototype.toString.call( variableName ) == '[object Array]'
Ответ написан
Комментировать
vasilyev
@vasilyev
php, 1c-bitrix
Если под пустым массивом вы подразумеваете, что такого массива вообще нет (на такую мысль наводит ваш код, иначе зачем создавать массив с таким же именем), то вот так примерно:
try {
    if (someArray.length != 0)
        alert('Array exist.');
} catch (e) {
    if (e.name == "ReferenceError") {
        someArray = new Array();
        alert ('There was no array, I made one for you!');
    }    
}


Ну и можно добавить проверку на тип как написал @VoidVolker.
Ответ написан
Комментировать
un1t
@un1t
А какой в этом тайный смысл? "Если массив пустой, создать пустой массив." Звучит очень странно.
Ответ написан
Комментировать
@lnked
arr = typeof arr !== 'undefined' ? arr : [];
Ответ написан
Комментировать
@Romantik1991 Автор вопроса
Спасибо. Смысл чтобы не создавался массив заново много раз. И если он был создан, то пропустить создание, а если нет, то создать. Как-то так вот. Спасибо за ответы
Ответ написан
Комментировать
rafuck
@rafuck
if ((typeof a != "object") || !(a instanceof Array)){
    a = [];
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы