我的要求是删除数组中的空值。
我有一个类似于以下方式的数组
addresses = {
status: true
accounts: [6]
0: {
account_id: "100004069844270facebook"
account_name: "Lal Mohan T"
account_type: "facebook"
} -
1: {
account_id: "bdc33d8ca941b8f00c2a4e046ba44761twitter"
account_name: "Minu Jose"
account_type: "twitter"
} -
2: {
account_id: "ec466c09fd62993ade48c6c4bb8d2da7facebook"
account_name: "Jijo John"
account_type: "facebook"
} -
3: {
account_id: "138115932930527facebook"
account_name: "TVInfo AMT"
account_type: "facebook"
}
4: {}
5: {}
6: {}
}
如何从此数组中删除{}元素。
我已经尝试了数组过滤器但它在我的情况下不起作用
addresses = addresses .filter(function (n) { return n !== undefined });
请帮我解决这个问题,非常感谢您的帮助。谢谢
答案 0 :(得分:1)
您既不处理null
值也不处理undefined
值。您似乎拥有一个包含其他对象的对象。其中一些包含的对象可能是空的,您需要明确检查:
Object.keys( addresses ).filter(function( v ) {
return typeof addresses[ v ] !== 'object' || Object.keys( addresses[ v ] ).length !== 0;
});
答案 1 :(得分:1)
首先addresses
没有数组,它是一个对象({}
= object,[]
= array)。
{}
并不意味着undefined
,而是一个空对象。最简单的方法是测试其空格是否在过滤方法中使用Object.keys()
function( value ) { return !(typeof value === "object" && Object.keys( value ).length === 0 ); }
答案 2 :(得分:1)
如果要从实际上不是帐户(但为空)的帐户中删除元素,则应测试帐户的属性而不是元素本身。
accounts = accounts.filter(function (n) { return n.account_id !== undefined });