【问题标题】:Delete array object when value is empty值为空时删除数组对象
【发布时间】:2014-11-13 13:46:07
【问题描述】:

我有以下数组,我只想删除 name 为空的条目,如第一个和第三个对象,我应该如何有效地做到这一点?

var myopj =[
    { "Name": "", "Value": "" }
    { "Name": "aaa", "Value": "bbb" },  
    { "Name": "", "Value": "" }
];

我在 SO 中看到了一些示例,但就我而言,它有点复杂,我需要删除值为 "" 的名称

arr.splice( arr.indexOf( "name" ), 1 );

【问题讨论】:

    标签: javascript jquery arrays json object


    【解决方案1】:

    这应该可行:

    myopj = myopj.filter(function(o){return o.Name});
    

    严格来说,这会创建一个新数组并将其分配给您的 myopj 变量,而不是从旧数组中删除项目,但这可能是实现您需要的最简单的方法。

    如果您的数组非常大,并且您确实想删除项目,则需要使用 for 循环并使用 splice 删除不需要的项目,但我认为使用 filter更好。

    【讨论】:

    • 谢谢,但我需要相反的,只是为了保留名称不为空的数组值,即只是第三个条目...
    【解决方案2】:

    使用jQuery.grep() 使用某些条件过滤数组:

    var myopj = [
        { "Name": "", "Value": "" },
        { "Name": "aaa", "Value": "bbb" },
        { "Name": "", "Value": "" }
    ];
    var myopj_copy = $.grep(myopj, function(item, index) {
        return item.Name !== "";
    });
    
    // myopj_copy is [{"Name":"aaa","Value":"bbb"}]
    

    此函数返回数组的副本,原始数组保持不变。

    【讨论】:

      猜你喜欢
      • 2021-12-13
      • 2021-11-17
      • 1970-01-01
      • 2016-11-26
      • 2015-12-24
      • 1970-01-01
      • 2017-04-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多