我有以下数组,我想删除名称为空的条目,就像第一个和第三个对象一样,我应该怎么做呢?
var myopj =[
{ "Name": "", "Value": "" }
{ "Name": "aaa", "Value": "bbb" },
{ "Name": "", "Value": "" }
];
我在SO中看到了一些示例,但在我的情况下,它有点复杂,我需要删除值为""
的名称
arr.splice( arr.indexOf( "name" ), 1 );
答案 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"}]
此函数返回数组副本,原始数组保持不变。