如何从JS中的数组中删除空对象

Rud*_*udy 22 javascript arrays jquery

我有一个对象数组,当我进行字符串化时,它看起来像这样:

"[[{"entrReqInv": "Neither"},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}]]"
Run Code Online (Sandbox Code Playgroud)

我怎样才能删除空{}s?

djf*_*dev 42

var newArray = array.filter(value => Object.keys(value).length !== 0);
Run Code Online (Sandbox Code Playgroud)

  • array.filter((item)=> Object.keys(item).length); (5认同)
  • 如果数组包含未定义的对象,这将不起作用。即[{名称:“abc”},未定义]。 (2认同)

Bar*_*mar 9

您可以使用Array.prototype.filter在字符串化之前删除空对象.

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;
});
Run Code Online (Sandbox Code Playgroud)


小智 9

我建议使用以下代码:

var newArray = array.filter(value => JSON.stringify(value) !== '{}');
Run Code Online (Sandbox Code Playgroud)

我没有使用Object.keys(value).length !== 0因为它不仅删除空对象{ }还删除空数组[ ]。如果您只想删除空对象,请使用上述方法。