如何从对象数组中删除虚假值
我有一个像这样的对象数组,
const arr = [
{
'first name': 'john',
'last name': 'doe',
age: '22',
'matriculation number': '12349',
dob: '12/08/1997'
},
{
'first name': 'Jane',
'last name': 'Doe',
age: '21',
'matriculation number': '12345',
dob: '31/08/1999'
},
{
'first name': '',
'last name': undefined,
age: undefined,
'matriculation number': undefined,
dob: undefined
}
]
我想从数组中删除最后一个对象,因为它具有虚假值,我试图通过编写一个像这样的简单函数来实现这一点
function removeFalsy(obj) {
for (let i in obj) {
if (!obj[i]) {
delete obj[i]
}
}
return obj
}
那没有解决问题,我也尝试使用
arr.map((a) => Object.keys(a).filter((b) => Boolean(b)))
但这只是返回了对象中的键,请问我该如何实现?
谢谢
回答
假设您要删除所有具有 falsey 值的对象,您可以Array.prototype.filter在输入数组上使用,以及Array.prototype.every检查条目值是否为 falsey
const arr = [{
'first name': 'john',
'last name': 'doe',
age: '22',
'matriculation number': '12349',
dob: '12/08/1997'
},
{
'first name': 'Jane',
'last name': 'Doe',
age: '21',
'matriculation number': '12345',
dob: '31/08/1999'
},
{
'first name': '',
'last name': undefined,
age: undefined,
'matriculation number': undefined,
dob: undefined
}
];
const result = arr.filter((el) => Object.values(el).every(Boolean));
console.log(result)