Javascript 如何从对象数组中删除falsy值

Javascript 如何从对象数组中删除falsy值,javascript,node.js,express,Javascript,Node.js,Express,我有一个这样的对象数组 const arr = [ { 'first name': 'john', 'last name': 'doe', age: '22', 'matriculation number': '12349', dob: '12/08/1997'

我有一个这样的对象数组

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                        
}                                       
]
我想从数组中删除最后一个对象,因为它有falsy值,我试图通过编写这样一个简单的函数来实现

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)))
但那只是返回了对象中的键,请问我如何实现这一点


谢谢

假设要删除所有具有错误值的对象,可以在输入数组上使用
Array.prototype.filter
,以及
Array.prototype.every
检查输入值是否错误

const arr=[{
“名字”:“约翰”,
“姓氏”:“doe”,
年龄:"22",,
‘入学编号’:‘12349’,
dob:'12/08/1997'
},
{
“名字”:“简”,
“姓氏”:“Doe”,
年龄:"21",,
‘入学编号’:‘12345’,
dob:'31/08/1999'
},
{
“名字”:“,
“姓氏”:未定义,
年龄:未定义,
“入学编号”:未定义,
dob:未定义
}
];
const result=arr.filter((el)=>Object.values(el.every)(布尔));
console.log(结果)
试试这个

 const noFalsies = arr.filter( ( element) => {
        const props = Object.values(element)
        return ! props.some( (aProp) => !aProp)
      }
      )

问题具体地说,
想要删除它,因为它有错误的值
0的值是错误的,如果我们必须指定年龄可以是0,名称可以是空字符串,那么只需重写每个回调函数来检查编辑:有人抱怨说年龄为0的孩子也会被删除,但是后来对它进行了deltet,因此,如果对象中至少有一个属性未定义,数组元素将不会通过过滤器。这与我的答案相同,因为检查每个元素是否都不为假与检查相同如果没有一个元素为假,它们都将在相同数量的元素上迭代,唯一的区别是,您的方法需要对每个元素和每个元素值进行否定