Javascript删除数组中的空值

Javascript删除数组中的空值,javascript,arrays,Javascript,Arrays,我的要求是删除数组中的空值 我有一个数组,如下所示 addresses = { status: true accounts: [6] 0: { account_id: "100004069844270facebook" account_name: "Lal Mohan T" account_type: "facebook" } - 1: { account_id: "bdc33

我的要求是删除数组中的空值

我有一个数组,如下所示

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 });

请帮我解决这个问题,非常感谢你的帮助。谢谢

您既没有处理
null
值,也没有处理
未定义的
值。似乎您有一个对象,其中包含其他对象。其中一些包含的对象可能为空,您需要明确检查:

Object.keys( addresses ).filter(function( v ) {
   return typeof addresses[ v ] !== 'object' || Object.keys( addresses[ v ] ).length !== 0;
});

首先,地址不是数组,它是一个对象(
{}
=object,
[]
=array)

{}
并不意味着
未定义
,而是一个空对象。测试其是否为空的最简单方法是在筛选方法中使用
Object.keys()

function( value ) { return !(typeof value === "object" && Object.keys( value ).length === 0 ); }

如果要从实际不是帐户(但为空)的帐户中删除元素,则应测试帐户的属性,而不是元素本身

accounts = accounts.filter(function (n) { return n.account_id !== undefined });

这不是一个未定义的
值。该对象中没有数组。@MihaiStancu如何删除{}值?很难说对象的实际结构是什么,因为这不是有效的JavaScript。非常感谢您的帮助。它真的帮助了我