У меня есть массив объектов, и когда я строковый, это выглядит так:
"[[{"entrReqInv": "Neither"},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}]]"
Как я могу удалить пустые {}
s?
У меня есть массив объектов, и когда я строковый, это выглядит так:
"[[{"entrReqInv": "Neither"},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}]]"
Как я могу удалить пустые {}
s?
var newArray = array.filter(value => Object.keys(value).length !== 0);
Вы можете использовать Array.prototype.filter
чтобы удалить пустые объекты перед строковым форматированием.
JSON.stringify(array.filter(function(el) {
// keep element if it not an object, or if it a non-empty object
return typeof el != "object" || Array.isArray(el) || Object.keys(el).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);
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>
Я бы порекомендовал использовать следующий код:
var newArray = array.filter(value => JSON.stringify(value) !== '{}');
Я не использовал Object.keys(value).length! == 0, поскольку он не только удаляет пустые объекты {}, но и удаляет пустые массивы []. Если вы хотите удалить только пустые объекты, используйте вышеуказанный метод.