Как проверить что массив пустой js
Перейти к содержимому

Как проверить что массив пустой js

  • автор:

Как проверить пустой ли массив java

Для проверки пустоты массива можно использовать свойство length , которое возвращает количество элементов в массиве. Если длина массива равна нулю, значит, массив пуст.

int[] arr = new int[i]; if (arr.length == 0)  System.out.println("Массив пуст"); > else  System.out.println("Массив не пуст"); > 

В данном примере создается пустой массив и проверяется его длина. Если длина равна нулю, то выводится сообщение «Массив пуст».

Проверка на пустой массив

Возникла непонятная ситуация: c сервера (Laravel) приходит массив с ошибками, если их нет — то пустой массив [] . Все попытки проверить на пустой массив не увенчались успехом. Пример если есть ошибка:

Не знаю почему, но Object.keys(errors).length не работает. Пример использования:

computed: < error() < return !!Object.keys(this.errors).length; >>, mounted() < console.log(this.errors); console.log(this.error) >, 
 <"email":["These credentials do not match our records."]>true 
[] true 

Отслеживать
задан 24 сен 2018 в 19:16
605 1 1 золотой знак 9 9 серебряных знаков 24 24 бронзовых знака

я, наверное, что-то не так понимаю. 1)добавьте пж вопрос к своему сообщению. 2) Все попытки проверить на пустой массив не увенчались успехом© — например?

24 сен 2018 в 19:27
например if (this.errors.length == 0)
24 сен 2018 в 19:39
24 сен 2018 в 19:57

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Можно получить ключи массива через Object.keys(errors) и проверить их длину.

const errors = <"email":["These credentials do not match our records."]>if (Object.keys(errors).length) console.log('Ошибка найдена') const errors2 = <> if (Object.keys(errors2).length) console.log('Во втором ошибка найдена')

Могу дать свою функцию для формирования строки сообщения из ошибок, вдруг пригодится:

function showServerError (< data >) < const < errors >= data let message = '' if (errors) < for (let field in errors) < if (errors.hasOwnProperty(field)) < for (let error of errors[field]) < // можете добавить префикс field(имя поля с ошибкой) если надо message += `$\n` > > > > else < message = data.message >// можете вывести через alert, например alert(message) > 

Проверка на пустоту по-человечески на JavaScript

В работе с js часто можно столкнуться с тем, что ты точно не знаешь пустая переменная или нет, но очень надо по ней пройтись через for или отправить на бэк.

Мы можем проверить массив или текст на длину и узнать, пустой он или нет, но как точно определить массив это или обьект?
Если мы напишем typeof, js ответит нам что и [] и <> обьекты

typeof <> // "object"
typeof [] // "object"

Для таких случаев я использую функцию проверки на пустоту, учитывая все моменты, которые могут пойти не по сценарию.

Первый пример

Представим, что нам нужно отправить форму на сервер используя js.
Мы знаем, что в форме есть поле имя , фамилия, номер телефона и вопрос.
Поля имя и номер телефона обязательные.

Возьмем простую форму отправки:

Ваше имя


Ваша фамилия


Ваш номер телефона


Ваш вопрос



Отправка происходит с помощью js, поэтому мы дописываем слушатель на форму

const form = document.querySelector('.js-form');form.addEventListener('submit', (e) => e.preventDefault(); 
alert('submit form')
>);

Теперь добавим функцию для проверки на пустоту и разберем ее:

const isEmpty = (data) => if (typeof data === 'object' || Array.isArray(data)) if ((Object.keys(data).length === 0) || (data.length === 0)) return true; 
>
> else switch (data) case typeof(data) === "undefined":
case "":
case 0:
case "0":
case null:
case false:
return true;
>
>
return false;
>

Мы видим, что в функцию isEmpty нам приходят данные, которые мы должны проверить и дать ответ. Мы можем проверять число, текст, объекты и массивы. Если мы передадим undefined, функция также скажет нам, что переменная пустая.

Допишем наш код на js с учетом проверки полей формы

const isEmpty = (data) => if (typeof data === 'object' || Array.isArray(data)) if ((Object.keys(data).length === 0) || (data.length === 0)) return true; 
>
> else switch (data) case typeof(data) === "undefined":
case "":
case 0:
case "0":
case null:
case false:
return true;
>
>
return false;
>
const form = document.querySelector('.js-form');form.addEventListener('submit', (e) => e.preventDefault();
const formEntries = new FormData(form).entries(); // Получаем введеные данные из формы
const json = Object.assign(. Array.from(formEntries, ([x,y]) => ())); // Преобразуем массив в объект ключ->значение
if (isEmpty(json.name) || isEmpty(json.phone)) < // Проверка на пустоту имени и номера телефона
alert('Поля Имя и Номер телефона обязательны к заполнению!');
return false;
>
alert('Сообщение отправлено!'); // Если все успешно мы окажемся тут
>);

Таким образом, мы сделали простую проверку на поля, которую можем использовать при отправке форм.

Второй пример

Мы получаем некоторые данные из api и должны перезаписать данные, если они обновились.

У нас есть массив, в котором находится список записей

[ 
title: 'Post title 1',
text: 'Lorem ipsum is awesome',
>,
title: 'Post title 2',
text: 'Lorem ipsum is awesome',
>,
title: 'Post title 3',
text: 'Lorem ipsum is awesome',
>,
title: 'Post title 4',
text: 'Lorem ipsum is awesome',
>,
]

В ответе от сервера у нас может быть как массив так и пустота(также с сервера нам может придти любой ответ, кроме нужного, кто их знает бэкендеров).

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

if (!isEmpty(response)) // some code
>

Таким образом, я или не отправлю пустоту на сервер и скажу пользователю, что именно он не заполнил.
Или не начну перебирать пустую переменную, что точно приведет к ошибке.

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

Это, конечно, попахивает немного, но для сведущих в JS код вполне прозрачный.

Ответ написан более трёх лет назад
Нравится 1 1 комментарий
Rain Summers @summer_rain
VoidVolker @VoidVolker Куратор тега JavaScript
Dark side eye. А у нас печеньки! А у вас?

Если переменная является массивом — то незачем создавать еще один массив, т.к. разницы между двумя пустыми массивами нет никакой.
Возможно автор хочет провести проверку «это массив»? Проверить, является ли переменная(объект) массивом можно например так:

Object.prototype.toString.call( variableName ) == '[object Array]'

Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
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.

Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
А какой в этом тайный смысл? «Если массив пустой, создать пустой массив.» Звучит очень странно.
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
arr = typeof arr !== ‘undefined’ ? arr : [];
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Romantik1991 @Romantik1991 Автор вопроса

Спасибо. Смысл чтобы не создавался массив заново много раз. И если он был создан, то пропустить создание, а если нет, то создать. Как-то так вот. Спасибо за ответы

Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать

if ((typeof a != "object") || !(a instanceof Array))

Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Ваш ответ на вопрос

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

javascript

  • JavaScript
  • +1 ещё

Есть ли метод кеширования iframe стороннего сайта?

  • 2 подписчика
  • час назад
  • 41 просмотр

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *