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,因此,如果对象中至少有一个属性未定义,数组元素将不会通过过滤器。这与我的答案相同,因为检查每个元素是否都不为假与检查相同如果没有一个元素为假,它们都将在相同数量的元素上迭代,唯一的区别是,您的方法需要对每个元素和每个元素值进行否定