Дополнительно
Как проверить в JavaScript, существует ли значение по определенному индексу массива?
Будет ли это работать для проверки того, существует ли значение в позиции "индекс" или нет, или есть лучший способ:
if(arrayName[index]==""){
// do stuff
}
513
17
Все массивы в JavaScript содержат элементы
array.length
, начиная сarray[0]
и заканчиваяarray[array.length - 1]
. По определению, элемент массива с индексомi
считается частью массива, еслиi
находится в диапазоне от0
доarray.length - 1
включительно.То есть массивы JavaScript линейны, начинаются с нуля и идут к максимуму, и у массивов нет механизма исключения определенных значений или диапазонов из массива. Чтобы узнать, существует ли значение в заданном индексе позиции (где индекс - 0 или целое положительное число), можно буквально просто использовать
Однако возможно, что некоторые значения массива могут быть нулевыми,
неопределенными
,NaN
,Infinity
, 0 или множеством других значений. Например, если добавить значения массива, увеличив свойствоarray.length
, то все новые значения будутнеопределенными
.Чтобы определить, является ли данное значение чем-то значимым или уже определено. То есть не
не определено
, илиnull
:или
Интересно, что благодаря правилам сравнения JavaScript'а мой последний пример можно оптимизировать следующим образом:
Может'т мы просто сделать это:
Используя только `.длина не является безопасным и приведет к ошибке в некоторых браузерах. Вот лучшее решение:
или, мы можем использовать:
Быстрый и универсальный подход
Если вы хотите проверить любой массив, если это имеет значения ложь (как и ложь, неопределено, null или пустые строки) вы можете просто использовать каждый() метод такой:
Например:
Если вам нужно получить первый индекс значение ложь, вы можете сделать это так:
Если вам просто нужно проверить значение ложь массива для данного индекса можно делать так:
Если вы имеете в виду под 'нуль' -> его элементы имеют значение null или равен '' , в данном случае : проверить, если массив пуст после фильтрации все 'нуль' элементы
Конечно ,добавить чистый метод до :
Это зависит от того, что вы имеете в виду с "пустой" по.
При попытке получить значение свойства объекта, который имеет свойство с таким именем, вы получите значение undefined по.
Что's что происходит с разреженными массивами: не все показатели между
0
имассива.длина-1
не существует.Так что вы можете проверить, если массив[индекс] === неопределено`.
Тем не менее, индекс недвижимости могли существовать с "неопределенным" значением. Если вы хотите отфильтровать этом случае, вы можете использовать
в
оператор или метод hasOwnProperty`, как описано в https://stackoverflow.com/q/135448/1529630Если вы хотите рассмотреть существующее свойство с
не определено
илиnull
значение не существует, вы можете использовать массив свободе сравнение[индекс] == неопределено " или " массив[индекс] == нуль
.Если вы знаете массив не редкие, можно сравнить
индекс
смассива.длина
. Но, чтобы быть безопасным, вы можете гарантировать, чтоIndex
на самом деле является индексом массива, см. https://stackoverflow.com/q/38163612/1529630Я бы рекомендовал создать такие функции:
Вы могли бы назвать это так:
Заставляет разработчиков придерживаться интерфейс isEmptyEl будет отлавливать ошибки ввода, таких как неопределенное имя_массива или переменные indexVal.
(Он'ы обычно хорошая практика, чтобы программа обороне при программировании в JavaScript.)
Вы получите ошибку, как это, если имя_массива не был определен:
Аналогичные результаты для неопределенного indexVal.
Вы получите ошибку, если массив или значения Индекса не существует.
Для допустимых входных данных, вы'Лл только правда если имя_массива[indexVal] является любое из следующих действий:
Ок, пусть's первый посмотреть, что произойдет, если значения массива не существует в JavaScript, так что если у нас есть массив, как показано ниже:
и сейчас мы проверяем, если 6 есть в индексе 5 или нет:
и мы получаем "неопределенным"...
Так что'ы в принципе дать нам ответ, на лучший способ, чтобы проверить, если определено, что-то вроде этого:
Это's лучше **** не делает этого в данном случае:
Потому что представьте, что у нас есть этот массив:
и мы делаем:
Итак, как вы видите, даже 0 Нет, это вовсе'т получить признание, есть несколько других вещей, которые могут сделать то же самое и сделать вас приложение глючит, так что будьте осторожны, я перечислю их всех:
''
Я думаю, что это решение подходит для парней, которые предпочитают декларативный функциональное программирование на императивном ООП или процедурный характер. Если ваш вопрос на"есть некоторые значения внутри? (а истина, либо значение ложь) и" Вы можете использовать `.какой метод для проверки значений внутри.
[].некоторые(Эль => Эл || !Эл);
isEmpty возвращает функция(ОБР) { ... }
.[].длина
приводит к0
, который является опасным в некоторых случаях.Дополнительные примеры:
[ ].некоторые(Эль => Эл || !Эл); // ложь [нуль].некоторые(Эль => Эл || !Эл); // верно [1, 3].некоторые(Эль => Эл || !Эл); // верно
Я хотел бы обратить внимание на то, несколько, кажется, упустили, а именно: можно иметь собой "пустой" в позиции массива, в середине массива. Рассмотрим следующие:
Естественный способ проверить, то будет ли элемент массива неопределено, я не уверен, если есть другие способы
попробуйте это, если массив[индекс] является null
С Лодашь, вы можете сделать:
если(_.есть(Треб,'документы')) - это чтобы проверить, является ли наш объект запроса имеет свойство с именем "документы" и если он имеет, что опора, на следующий
если (запр.документы.длина) состоит в том, чтобы проверить, если это не пустой массив, так что другие материалы, такие как
объекту` могут быть продолжены.Чтобы проверить, если он никогда не были определены, или если он был удален:
также работает с ассоциативными массивами и массивами, где вы удалили какой-то коэффициент
Чтобы проверить, если он не был определен, был удален или является null или пустой логическое значение (НАН, пустая строка, false):
Я столкнулся с этой проблемой, используя фреймворк Laravel объекты DataTable. Я хранить значение JSON с именем "свойства" в журнале операций и хотел показать кнопку в зависимости от этого значение пустым или нет.
Ну, таблицами толкует это как массив, если он был пуст, и объект, если он не был, поэтому следующее решение работает для меня:
Объект не имеют свойства length.
Вы можете использовать библиотеку Loadsh сделать это более эффективно, например:
если у вас есть массив с именем и Медведь домашние животные;, например:
Чтобы проверить все значения массива для null или undefined значения:
в
в
Увидеть больше примеров в http://underscorejs.org/