Подтвердить что ты не робот

Проверка чего-то isEmpty в Javascript?

Как проверить, пуста ли переменная в Javascript? Извините за глупый вопрос, но я новичок в Javascript!

if(response.photo) is empty {
    do something
else {
    do something else
}

response.photo был из JSON, и иногда он мог быть пустым, пустые ячейки данных! Я хочу проверить, не пуст ли он.

4b9b3361

Ответ 1

Если вы тестируете пустую строку:

if(myVar === ''){ // do stuff };

Если вы проверяете переменную, которая была объявлена, но не определена:

if(myVar === null){ // do stuff };

Если вы проверяете переменную, которая не может быть определена:

if(myVar === undefined){ // do stuff };

Если вы проверяете i.e, любая переменная имеет значение null или undefined:

if(myVar == null){ // do stuff };

Ответ 2

Это больший вопрос, чем вы думаете. Переменные могут быть пустыми во многих отношениях. Разница зависит от того, что вам нужно знать.

// quick and dirty will be true for '', null, undefined, 0, NaN and false.
if (!x) 

// test for null OR undefined
if (x == null)  

// test for undefined OR null 
if (x == undefined) 

// test for undefined
if (x === undefined) 
// or safer test for undefined since the variable undefined can be set causing tests against it to fail.
if (typeof x == 'undefined') 

// test for empty string
if (x === '') 

// if you know its an array
if (x.length == 0)  
// or
if (!x.length)

// BONUS test for empty object
var empty = true, fld;
for (fld in x) {
  empty = false;
  break;
}

Ответ 3

Это должно охватывать все случаи:

function empty( val ) {

    // test results
    //---------------
    // []        true, empty array
    // {}        true, empty object
    // null      true
    // undefined true
    // ""        true, empty string
    // ''        true, empty string
    // 0         false, number
    // true      false, boolean
    // false     false, boolean
    // Date      false
    // function  false

        if (val === undefined)
        return true;

    if (typeof (val) == 'function' || typeof (val) == 'number' || typeof (val) == 'boolean' || Object.prototype.toString.call(val) === '[object Date]')
        return false;

    if (val == null || val.length === 0)        // null or 0 length array
        return true;

    if (typeof (val) == "object") {
        // empty object

        var r = true;

        for (var f in val)
            r = false;

        return r;
    }

    return false;
}

Ответ 4

См. http://underscorejs.org/#isEmpty

isEmpty_.isEmpty(объект) Возвращает true, если перечисляемый объект не содержит значений (нет перечислимых собственных свойств). Для строк и объектов типа массива _.isEmpty проверяет, является ли свойство length равным 0.

Ответ 5

Я вижу потенциальные недостатки во многих решениях, опубликованных выше, поэтому я решил скомпилировать свои собственные.
Примечание. использует Array.prototype.some, проверьте поддержку своего браузера.

Решение ниже рассматривает переменную пустую, если выполняется одно из следующих условий:

  • JS считает, что переменная равна false, которая уже охватывает многие вещи, такие как 0, "", [] и даже [""] и [0]
  • Значение null или его тип 'undefined'
  • Это пустой объект
  • Это объект/массив, состоящий из только значений, которые сами по себе пусты (т.е. разбиты на примитивы, каждая из которых равна false). Проверяет сверление рекурсивно в структуре Object/Array. Например.

    isEmpty({"": 0}) // true
    isEmpty({"": 1}) // false
    isEmpty([{}, {}])  // true
    isEmpty(["", 0, {0: false}]) //true
    

Код функции:

/**
 * Checks if value is empty. Deep-checks arrays and objects
 * Note: isEmpty([]) == true, isEmpty({}) == true, isEmpty([{0:false},"",0]) == true, isEmpty({0:1}) == false
 * @param value
 * @returns {boolean}
 */
function isEmpty(value){
  var isEmptyObject = function(a) {
    if (typeof a.length === 'undefined') { // it an Object, not an Array
      var hasNonempty = Object.keys(a).some(function nonEmpty(element){
        return !isEmpty(a[element]);
      });
      return hasNonempty ? false : isEmptyObject(Object.keys(a));
    }

    return !a.some(function nonEmpty(element) { // check if array is really not empty as JS thinks
      return !isEmpty(element); // at least one element should be non-empty
    });
  };
  return (
    value == false
    || typeof value === 'undefined'
    || value == null
    || (typeof value === 'object' && isEmptyObject(value))
  );
}

Ответ 6

Как насчет того, чтобы делать так?

JSON.stringify({}) === "{}"

Ответ 7

Объединение ответов из @inkednm в одну функцию:

   function isEmpty(property) {
      return (property === null || property === "" || typeof property === "undefined");
   }

Ответ 8

Проверьте undefined:

if (typeof response.photo == "undefined")
{
    // do something
}

Это сделало бы эквивалент vb IsEmpty. Если myvar содержит любое значение, даже null, пустую строку или 0, это не "пусто".

Чтобы проверить, существует ли переменная или свойство, например, она была объявлена, хотя она может и не быть определена, вы можете использовать оператор in.

if ("photo" in response)
{
    // do something
}

Ответ 9

Это зависит от того, что вы подразумеваете под "пустым". Наиболее распространенный шаблон - проверить, соответствует ли переменная undefined. Многие люди также выполняют нулевую проверку, например:
if (myVariable === undefined || myVariable === null)...

или, в более короткой форме:
if (myVariable || myVariable === null)...

Ответ 10

if (myVar == undefined)

будет работать, чтобы узнать, объявлен ли var, но не инициализирован.

Ответ 11

Если вы ищете эквивалент функции PHP empty, проверьте это:

function empty(mixed_var) {
  //   example 1: empty(null);
  //   returns 1: true
  //   example 2: empty(undefined);
  //   returns 2: true
  //   example 3: empty([]);
  //   returns 3: true
  //   example 4: empty({});
  //   returns 4: true
  //   example 5: empty({'aFunc' : function () { alert('humpty'); } });
  //   returns 5: false

  var undef, key, i, len;
  var emptyValues = [undef, null, false, 0, '', '0'];

  for (i = 0, len = emptyValues.length; i < len; i++) {
    if (mixed_var === emptyValues[i]) {
      return true;
    }
  }

  if (typeof mixed_var === 'object') {
    for (key in mixed_var) {
      // TODO: should we check for own properties only?
      //if (mixed_var.hasOwnProperty(key)) {
      return false;
      //}
    }
    return true;
  }

  return false;
}

http://phpjs.org/functions/empty:392

Ответ 12

что мне не хватает, если пустой массив... keyless object... falseness const isEmpty = o = > Array.isArray(o) && &! o.join(''). length || typeof o === 'object' && &! Object.keys(o).length ||! (+ Значение);

Ответ 13

просто поместите переменную в условие if, если переменная имеет любое значение, она вернет true else false.

if (response.photo){ // if you are checking for string use this if(response.photo == "") condition
 alert("Has Value");
}
else
{
 alert("No Value");
};

Ответ 14

Здесь более простое (короткое) решение для проверки пустых переменных. Эта функция проверяет, является ли переменная пустой. Предоставленная переменная может содержать смешанные значения (null, undefined, массив, объект, строка, целое число, функция).

function empty(mixed_var) {
 if (!mixed_var || mixed_var == '0') {
  return true;
 }
 if (typeof mixed_var == 'object') {
  for (var k in mixed_var) {
   return false;
  }
  return true;
 }
 return false;
}

//   example 1: empty(null);
//   returns 1: true

//   example 2: empty(undefined);
//   returns 2: true

//   example 3: empty([]);
//   returns 3: true

//   example 4: empty({});
//   returns 4: true

//   example 5: empty(0);
//   returns 5: true

//   example 6: empty('0');
//   returns 6: true

//   example 7: empty(function(){});
//   returns 7: false

Ответ 15

const isEmpty = val => val == null || !(Object.keys(val) || val).length;

Ответ 16

Здесь мое самое простое решение.

Вдохновленный empty функцией PHP

function empty(n){
	return !(!!n ? typeof n === 'object' ? Array.isArray(n) ? !!n.length : !!Object.keys(n).length : true : false);
}

//with number
console.log(empty(0));        //true
console.log(empty(10));       //false

//with object
console.log(empty({}));       //true
console.log(empty({a:'a'}));  //false

//with array
console.log(empty([]));       //true
console.log(empty([1,2]));    //false

//with string
console.log(empty(''));       //true
console.log(empty('a'));      //false