当值为空时删除数组对象

时间:2014-11-13 13:46:07

标签: javascript jquery arrays json object

我有以下数组,我想删除名称为空的条目,就像第一个和第三个对象一样,我应该怎么做呢?

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

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

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

2 个答案:

答案 0 :(得分:2)

这应该有效:

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

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

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

答案 1 :(得分:1)

使用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"}]

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