我有一个对象数组,当我将其转换成字符串时,它看起来像这样:
"[[{"entrReqInv": "Neither"},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}]]"
我该如何删除空的{}
?
我有一个对象数组,当我将其转换成字符串时,它看起来像这样:
"[[{"entrReqInv": "Neither"},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}]]"
我该如何删除空的{}
?
var newArray = array.filter(value => Object.keys(value).length !== 0);
array
表示要操作的数组,filter()
方法返回一个新的数组,包含满足条件的元素。在括号内的箭头函数((item) => Object.keys(item).length)
是指筛选出那些具有非空属性的元素。简单解释一下箭头函数的意思:(item)
表示当前处理的元素,在这里是一个对象;Object.keys(item)
获取该对象所有属性名组成的数组;.length
表示该数组的长度,即该对象属性的数量。如果该值为0,则认为该对象属性为空,该元素被过滤掉;否则保留该元素。整句话的翻译如下:筛选数组中那些对象属性不为空的元素。 - SinuxArray.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;
});
Array.isArray(el)
添加到过滤器中。 - Roamer-1888我建议使用以下代码:
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)
}
})
const arrValues = [{
x: 100
}, {
x: 200
}, {}];
let filteredArra = arrValues.filter(
obj => !(obj && Object.keys(obj).length === 0)
);
出于渐进增强的原因,这是我会做的:
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);
splice()
的参数有误,应该是 (i, 1)
。但这也会跳过被删除的元素之后的那个元素,因为那个元素将变成 i
。 - Barmarn = Object.keys(o).length;
。 - Barmarvar filteredArray = array.filter(value => !_.isEmpty(value));
这应该过滤空对象和未定义的内容。
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);
arr = _.filter( arr,v => _.keys(v).length!== 0);