簡體   English   中英

如何從JS中的數組中刪除空對象

[英]How can I remove empty object in from an array in JS

我有一個對象數組,當我進行字符串化時,它看起來像這樣:

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

如何刪除空的{}

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

您可以使用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;
});

我建議使用以下代碼:

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

我沒有使用Object.keys(value).length !== 0因為它不僅刪除空對象{ }還刪除空數組[ ] 如果您只想刪除空對象,請使用上述方法。

如果您的對象數組類似於 -

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

然后使用下面的行刪除空白對象-

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

更簡單的理解:

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

這是我會做的,出於漸進增強的原因:

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);
const arrValues = [{ x: 100 }, { x: 200 }, {}]; let filteredArra = arrValues.filter( obj => !(obj && Object.keys(obj).length === 0) );

 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= _.filter(arr,v => _.keys(v).length !== 0);

如果你的數據結構是這樣的:[ {} , {} ]; 那么你可以簡單地使用這個流暢的代碼。

array.filter(x=> !jQuery.isEmptyObject(x))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM