如何从对象数组中删除虚假值

我有一个像这样的对象数组,

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)


以上是如何从对象数组中删除虚假值的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>