Для проверки пустоты массива можно использовать свойство length , которое возвращает количество элементов в массиве. Если длина массива равна нулю, значит, массив пуст.
int[]arr=newint[i];if(arr.length==0)System.out.println("Массив пуст");>elseSystem.out.println("Массив не пуст");>
В данном примере создается пустой массив и проверяется его длина. Если длина равна нулю, то выводится сообщение «Массив пуст».
Проверка на пустой массив
Возникла непонятная ситуация: c сервера (Laravel) приходит массив с ошибками, если их нет — то пустой массив [] . Все попытки проверить на пустой массив не увенчались успехом. Пример если есть ошибка:
Не знаю почему, но Object.keys(errors).length не работает. Пример использования:
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. А у нас печеньки! А у вас?
Если переменная является массивом — то незачем создавать еще один массив, т.к. разницы между двумя пустыми массивами нет никакой. Возможно автор хочет провести проверку «это массив»? Проверить, является ли переменная(объект) массивом можно например так:
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
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
+1 ещё
Есть ли метод кеширования iframe стороннего сайта?