Я видел этот вопрос , но я не видел конкретного примера JavaScript. Есть ли простое string.Empty
в JavaScript или это просто проверка ""
?
javascript
null
is-empty
casademora
источник
источник
Ответы:
Если вы просто хотите проверить, есть ли какое-либо значение, вы можете сделать
Если вам нужно проверить специально для пустой строки над нулем, я думаю , что проверка против
""
является лучшим выбором, используя в===
оператора (так что вы знаете , что это, на самом деле, строку вы сравниваете против).источник
=== ''
и тестирование.length
не показали заметного улучшения (и использование.length
только работ, если можно предположить, что у вас есть строка).length > 0
на самом деле намного быстрее, чем сравнение со строковым литералом! Проверьте это jsPerfДля проверки, является ли строка пустой, нулевой или неопределенной, я использую:
Для проверки, является ли строка пустой, нулевой или неопределенной, я использую:
Для проверки, является ли строка пустой или содержит только пробел:
источник
if (variable == constant value)
и если вы забудете '=', вы назначаете постоянное значение переменной вместо тестирования. Код все равно будет работать, так как вы можете назначить переменную в if. Поэтому более безопасный способ написать это условие - поменять местами постоянное значение и переменную. Таким образом, когда вы тестируете свой код, вы увидите ошибку (неверная левосторонняя сторона в назначении). Вы также можете использовать что-то вроде JSHint, чтобы запретить присваивание в условиях и получать предупреждения при его написании./^\s*$/.test(str)
самом деле не читается - может быть, лучше удалить пробелы, используя более простой код или регулярное выражение? см. stackoverflow.com/questions/6623231/…, а также stackoverflow.com/questions/10800355/…if blue is the sky
. См. Dodgycoder.net/2011/11/yoda-conditions-pokemon-exception.htmlВсе предыдущие ответы хороши, но это будет еще лучше. Используйте
!!
( не не ) оператор.Или используйте тип литья:
Оба выполняют одну и ту же функцию. Введите переменную в логическое значение, где
str
переменная.Это возвращается
false
дляnull,undefined,0,000,"",false
.Возвращается
true
для строки "0" и пробела "".источник
if(str)
иif(!!str)
?var any = (!!str1 && !!str2 && !!str3)
если там тоже есть число!!str.trim()
чтобы убедиться, что строка состоит не только из пробелов.Boolean(str)
гораздо более читабелен и менее «весит».Самое близкое, что вы можете получить
str.Empty
(с условием, что str является String):источник
str.Empty
.Если вам нужно убедиться, что строка - это не просто набор пустых пробелов (я предполагаю, что это для проверки формы), вам нужно заменить эти пробелы.
источник
if(str.match(/\S/g)){}
str.match(/\S/)
var trimLeft = /^\s+/, trimRight = /\s+$/;
Я использую:
источник
typeof
Вswitch
не работает для меня. Я добавилif (typeof e == "undefined")
тест, и это работает. Почему?case undefined:
вместоcase typeof(e) == "undefined":
?Вы можете использовать lodash : _.isEmpty (value).
Она охватывает много случаев , как
{}
,''
,null
,undefined
и т.д.Но он всегда возвращается
true
дляNumber
типа примитивных типов данных JavaScript, таких как_.isEmpty(10)
или_.isEmpty(Number.MAX_VALUE)
обаtrue
.источник
_.isEmpty(" "); // => false
" "
что не пусто._.isEmpty("");
возвращает истину.Пытаться:
источник
str.trim().length
будет быстрее, чемstr.trim()
, примерно на 1% в соответствии с моими собственными результатами тестирования.if (!str) { ... }
Функция:
PS: в JavaScript не используйте разрыв строки после
return
;источник
if
утверждение.Там нет ничего, представляющего пустую строку в JavaScript. Выполните проверку либо
length
(если вы знаете, что var всегда будет строкой), либо против""
источник
Я бы не стал слишком беспокоиться о самом эффективном методе. Используйте то, что наиболее ясно для вашего намерения. Для меня это обычно
strVar == ""
.Согласно комментарию Константина , если бы strVar мог каким-то образом содержать целочисленное значение 0, то это действительно была бы одна из тех ситуаций, проясняющих намерения.
источник
===
. Возвращает true только еслиstrVar
это пустая строка.Представление
Я выполняю тесты на macOS v10.13.6 (High Sierra) для 18 выбранных решений. Решения работают немного иначе (для входных данных углового случая), которые были представлены во фрагменте ниже.
Выводы
!str
,==
,===
иlength
быстро для всех браузеров (А, В, С, G, I, J)test
,replace
) иcharAt
самые медленные для всех браузеров (H, L, M, P)подробности
В следующем фрагменте я сравниваю результаты выбранных 18 методов, используя разные входные параметры
""
"a"
" "
- пустая строка, строка с буквой и строка с пробелом[]
{}
f
- массив, объект и функция0
1
NaN
Infinity
- номераtrue
false
- логическое значениеnull
undefined
Не все протестированные методы поддерживают все входные данные.
Показать фрагмент кода
И затем для всех методов я выполняю тест скорости
str = ""
для браузеров Chrome v78.0.0, Safari v13.0.4 и Firefox v71.0.0 - вы можете запустить тесты на своей машине здесьисточник
Много ответов и много разных возможностей!
Без сомнения, для быстрой и простой реализации победителем является:
if (!str.length) {...}
Тем не менее, как и многие другие примеры доступны. Лучший функциональный метод для этого, я бы предложил:
Я немного излишне знаю.
источник
str.length === 0
возвращает true для любой функции, которая не имеет формальных параметров.Вы также можете использовать регулярные выражения:
Проверяет строки, которые либо пусты, либо заполнены пробелами.
источник
var a;
существуютобрезать
false spaces
значение, затем проверитьemptiness
источник
Кроме того, в случае, если вы рассматриваете заполненную пробелом строку как «пустую».
Вы можете проверить это с помощью этого регулярного выражения:
источник
Я обычно использую что-то вроде этого,
источник
typeof variable != "undefined"
прежде чем проверять, пусто ли.Я не заметил ответа, который учитывает возможность появления нулевых символов в строке. Например, если у нас есть нулевая строка символов:
Чтобы проверить его пустоту, можно сделать что-то вроде этого:
Он работает с пустой строкой и пустой строкой и доступен для всех строк. Кроме того, его можно расширить, чтобы он содержал другие пустые или пробельные символы JavaScript (т. Е. Неразрывный пробел, метка порядка байтов, разделитель строк / абзацев и т. Д.).
источник
Между тем, у нас может быть одна функция, которая проверяет все пустые значения, такие как null, undefined, '', '', {}, [] . Так что я просто написал это.
Варианты использования и результаты.
let rand = ()=>Math.random()
, затемrand && rand.length > 0)
возвращает false, но ясно, что fn не является «пустым». Т.е. он возвращает false для любой функции, которая не имеет параметров формата.Math.random()
возвращает число, а не строку. И этот ответ о строках. ;-)empty(0)
иempty(7)
должны вернуть то же значение.empty("0")
должен возвращатьfalse
(потому что это не пустая строка), ноempty(0)
должен возвращаться,true
потому что она пуста :)empty
в данном случае это вводящее в заблуждение имя.empty
хорошо. В документации php для пустой функции:Returns FALSE if var exists and has a non-empty, non-zero value. Otherwise returns TRUE.
разница междуPHP
этой функцией и этой строкой - эта строка'0'
не будет определяться как пустая.empty
это неточное и вводящее в заблуждение имя. Интересно, что PHP также имеет функцию с плохим именемempty
, но ошибки PHP не имеют ничего общего с JavaScript."".value.length
вызовет ошибку. Это должно бытьstr.length === 0
TypeError
Еслиstr
равенundefined
илиnull
!(!!this.length)
а не просто!this
(или!this.trim()
для второго варианта)? Строка нулевой длины уже ложна, круглые скобки избыточны, и отрицание ее три раза - это то же самое, что отрицание ее один раз.На данный момент нет прямого метода, такого как string.empty, чтобы проверить, является ли строка пустой или нет. Но в вашем коде вы можете использовать проверку оболочки для пустой строки, например:
Используя это, вы также можете убедиться, что строка не является неопределенной или нулевой. Помните, неопределенные, нулевые и пустые три разные вещи.
источник
let rand = ()=>Math.random()
, затемrand && rand.length > 0)
возвращает false, но ясно, что fn не является «пустым». Т.е. он возвращает false для любой функции, которая не имеет параметров формата.Math.random()
возвращает число, а не строку. И этот ответ о строках. ;-)Все эти ответы хороши.
Но я не могу быть уверен, что переменная является строкой, не содержит только пробелов (это важно для меня) и может содержать «0» (строка).
Моя версия:
Образец на jsfiddle .
источник
empty(0)
иempty(7)
должны вернуть то же значение.empty("0")
должен возвращатьfalse
(потому что это не пустая строка), ноempty(0)
должен возвращаться,true
потому что она пуста :)empty
в данном случае это вводящее в заблуждение имя.empty
хорошо. В документации php для пустой функции:Returns FALSE if var exists and has a non-empty, non-zero value. Otherwise returns TRUE.
разница междуPHP
этой функцией и этой строкой - эта строка'0'
не будет определяться как пустая.empty
это неточное и вводящее в заблуждение имя. Интересно, что PHP также имеет функцию с плохим именемempty
, но ошибки PHP не имеют ничего общего с JavaScript.Я не видел хорошего ответа здесь (по крайней мере, не тот ответ, который подходит мне)
Поэтому я решил ответить себе:
value === undefined || value === null || value === "";
Вам нужно начать проверять, не определено ли оно. В противном случае ваш метод может взорваться, и тогда вы можете проверить, равен ли он нулю или равен пустой строке.
Вы не можете иметь! или только
if(value)
потому, что если вы проверите,0
он даст вам ложный ответ (0 - ложь).С учетом сказанного, оберните его таким способом:
public static isEmpty(value: any): boolean { return value === undefined || value === null || value === ""; }
PS: Вам не нужно проверять typeof , так как он взорвется и выбросит еще до того, как войдет в метод
источник
Если нужно обнаружить не только пустые, но и пустые строки, я добавлю к ответу Горала:
источник
Попробуй это
источник
"".value.length
вызовет ошибку. Это должно бытьstr.length === 0
TypeError
Еслиstr
равенundefined
илиnull
Вы можете легко добавить его к собственному объекту String в JavaScript и использовать его снова и снова ...
Что-то простое, например, приведенный ниже, может помочь вам, если вы хотите проверить
''
пустые строки:В противном случае, если вы хотите проверить как
''
пустую строку, так и' '
пробел, вы можете сделать это, просто добавивtrim()
что-то вроде кода ниже:и вы можете назвать это так:
источник
!(!!this.length)
а не просто!this
(или!this.trim()
для второго варианта)? Строка нулевой длины уже ложна, круглые скобки избыточны, и отрицание ее три раза - это то же самое, что отрицание ее один раз.Попробуй это:
источник
Я провел некоторое исследование того, что произойдет, если вы передадите не строковое и непустое / нулевое значение в функцию тестера. Как многие знают, (0 == "") верно в JavaScript, но поскольку 0 является значением, а не пустым или нулевым, вы можете проверить его.
Следующие две функции возвращают true только для неопределенных, нулевых, пустых / пробельных значений и false для всего остального, такого как числа, логические значения, объекты, выражения и т. Д.
Существуют более сложные примеры, но они просты и дают согласованные результаты. Нет необходимости проверять неопределенность, поскольку она включена в проверку (value == null). Вы также можете имитировать поведение C # , добавляя их в строку следующим образом:
Вы не хотите помещать его в прототип Strings, потому что, если экземпляр класса String имеет значение null, он выдаст ошибку:
Я проверил со следующим массивом значений. Вы можете пройтись по нему, чтобы проверить свои функции, если сомневаетесь.
источник
Чтобы проверить, является ли это точно пустой строкой:
Чтобы проверить, является ли это пустой строкой ИЛИ логическим эквивалентом для нулевого значения (null, undefined, 0, NaN, false, ...):
источник
Там нет
isEmpty()
метода, вы должны проверить тип и длину:Проверка типа необходима, чтобы избежать ошибок времени выполнения, когда
test
естьundefined
илиnull
.источник
Игнорируя строки пробелов, вы можете использовать это, чтобы проверить наличие нулевых, пустых и неопределенных:
Он лаконичен и работает для неопределенных свойств, хотя и не самый читаемый.
источник