web-dev-qa-db-de.com

Überprüfen Sie, ob das Objekt mit JavaScript/jQuery leer ist

Ich habe ein Objekt wie dieses:

ricHistory = {
  name1: [{
    test1: value1,
    test2: value2,
    test3: value3
  }],
  name2: [{
    test1: value1,
    test2: value2,
    test3: value3
  }]
};

Nun möchte ich prüfen, ob z. name2 ist bei Javascript/jQuery leer. Ich kenne die Methode hasOwnProperty. Es funktioniert nur für data.hasOwnProperty('name2'), wenn der Name existiert oder nicht, aber ich muss überprüfen, ob der Name leer ist.

20
Artpixler

Versuche dies:

if (ricHistory.name2 && 
    ricHistory.name2 instanceof Array &&
    !ricHistory.name2.length) {
   console.log('name2 is empty array');
} else {
   console.log('name2 does not exists or is not an empty array.');
}

Die obige Lösung zeigt Ihnen, ob richHistory.name2 existiert, ein Array ist und nicht leer ist.

7
Minko Gechev

sie können dies mit jQuery.isEmptyObject()

Prüfen Sie, ob ein Objekt leer ist (keine Eigenschaften enthält).

jQuery.isEmptyObject( object )

Beispiel:

jQuery.isEmptyObject({}) // true
jQuery.isEmptyObject({ foo: "bar" }) // false

von Jquery

63
NullPoiиteя

Eine andere Syntax von JQuery, bei der Sie nicht Prototype oder ähnliches verwenden, und stattdessen lieber $ als jQuery-Präfix verwenden.

$.isEmptyObject( object )
7
burakakkor

Versuchen Sie diese nützliche Funktion:

function isEmpty(obj) {
if(isSet(obj)) {
    if (obj.length && obj.length > 0) { 
        return false;
    }

    for (var key in obj) {
        if (hasOwnProperty.call(obj, key)) {
            return false;
        }
    }
}
return true;    
};

function isSet(val) {
if ((val != undefined) && (val != null)){
    return true;
}
return false;
};
4
stamat

Ich gehe die ganze Zeit so in meinem Code:

Angenommen, mein Controller gibt etwas wie folgt zurück:

$return['divostar'] = $this->report->get_additional_divostar_report($data);
$return['success'] = true;
return response()->json($return);

In Jquery würde ich wie folgt überprüfen:

if (jQuery.isEmptyObject(data.divostar)){
      html_result = "<p id='report'>No report yet</p>";
      $('#no_report_table').html(html_result).fadeIn('fast');
} 
2
Fokwa Best

Schmutzig aber einfach und funktioniert: 

function isEmptyObject(obj) {
  return JSON.stringify(obj) == '{}';
}
1
elixon

Sie können isSet abkürzen, indem Sie stattdessen Folgendes tun:

function isSet(val) { return ((val != undefined) && (val != null));}

Ich finde es einfacher, den Boolean-Befehl der Anweisung zurückzugeben, anstatt ihn zu übergeben und dann zurückzukehren.

0
Rogala