web-dev-qa-db-fra.com

Comment puis-je supprimer un objet vide d'un tableau dans JS

J'ai un tableau d'objets et quand je stringifie, ça ressemble à ça:

"[[{"entrReqInv": "Neither"},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}]]"

Comment puis-je supprimer le {}s vide?

11
Rudy
var newArray = array.filter(value => Object.keys(value).length !== 0);
27
djfdev

Vous pouvez utiliser Array.prototype.filter pour supprimer les objets vides avant l’affichage en chaîne.

JSON.stringify(array.filter(function(el) {
    // keep element if it's not an object, or if it's a non-empty object
    return typeof el != "object" || Array.isArray(el) || Object.keys(el).length > 0;
});
8
Barmar

Voici ce que je ferais, pour des raisons d'amélioration progressive:

var aryAry = [[{prop: 'value'},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}]];
var a = aryAry[0], r = [];
for(var i=0,l=a.length; i<l; i++){
  var n = 0, o = a[i];
  for(var q in o){
    n++;
  }
  if(n > 0){
    r.Push(o);
  }
}
console.log(r);
0
PHPglue