jquery 我怎样从JS的数组中删除空对象

3lxsmp7m  于 2023-02-18  发布在  jQuery
关注(0)|答案(9)|浏览(138)

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

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

如何删除空的{}

sxissh06

sxissh061#

var newArray = array.filter(value => Object.keys(value).length !== 0);
7xllpg7q

7xllpg7q2#

在字符串化之前,可以使用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;
});
5m1hhzi4

5m1hhzi43#

我建议使用以下代码:

var newArray = array.filter(value => JSON.stringify(value) !== '{}');

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

iugsix8n

iugsix8n4#

如果你的对象数组是-

finalobj--- [ { 'patient._id': '123' },
  { 'patient.birthDate': 'lt2013-01-14', {}, {} } ]

然后使用下面的行删除空白对象--

var newArray = obj.filter((value: {}) => Object.keys(value).length !== 0);
vnzz0bqm

vnzz0bqm5#

更易于理解:

let primaryArray = [{key:'value'},{},{},{}]
let removeObsoletesArray = []
primaryArray.forEach( element => {
   if(element.length > 0){
      removeObsoletesArray.push(element)
   }
})
nx7onnlm

nx7onnlm6#

出于渐进增强的原因,我会这样做:

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);
dphi5xsq

dphi5xsq7#

const arrValues = [{
  x: 100
}, {
  x: 200
}, {}];
let filteredArra = arrValues.filter(
  obj => !(obj && Object.keys(obj).length === 0)
);
gpnt7bae

gpnt7bae8#

如果你想让这篇文章更有可读性,那么我建议结合lodash:

var filteredArray = array.filter(value => !_.isEmpty(value));

这将过滤空对象和未定义对象。

fnvucqvd

fnvucqvd9#

let arr = [{a:1},{},{c:3}];

arr = _.filter(arr,v => _.keys(v).length !== 0);

console.log(arr)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>

arr =.过滤器(arr,v =〉.密钥(v).长度!== 0);

相关问题