js,求大神指导 怎么删除数组型json里不符合条件的元素

var a=[{id:1,name:'三',flag:1},{id:2,name:'张',flag:undefined},{id:3,name:undefined,flag:1}]
若a中的元素里面有undefined的就去掉这个元素
变成
var a=[{id:1,name:'三',flag:1},{id:2,name:'张'},{id:3,flag:1}]
写错了 需求是这样的 不好意思

谢谢哈 ,能不能按照下面的帮忙改下
var a=[{"id":"4","flag":1},{"id":"3"},{"id":"2"}];,有的里面没有flag
var h= $.parseJSON(a); parse(h);
function parse(json) {
var result = [], setBody = $.map(json, function(item) {
return { "get" : [ { "id" : item.id,"flag" : item.flag, ] }; });
return result;
} 正常情况是返回:[ { id : 4,flag:1},{ id :3, flag: undefined},{ id :2, flag: undefined} ] 怎么样当.不存在的时候就不取返回[ { id : 4,flag:1},{ id :3},{ id :2} ]

<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<meta name="keywords" content="白菜编辑部">
<title>白菜编辑部</title>
<style type="text/css">
</style>
<script type="text/javascript">
var array = [
            {
                id : 1,
                name : '三',
                flag : 1
            },
            {
                id : 2,
                name : '张',
                flag : undefined
            },
            {
                id : 3,
                name : undefined,
                flag : 1
            }
    ];
    
    var result = [];
    for ( var i = 0; i < array.length; i++)
    {
    var o = {};
    var obj = array[i];
    for ( var p in obj)
    {
    if (typeof obj[p] !== 'undefined')
    {
    o[p] = obj[p];
    }
    }
    result.push (o);
    }
    
    console.log (result);
</script>
</head>
<body>
</body>
</html>

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-12-30
for(var i in a){
     for(var k in a[i])
     !a[i][k] && delete a[i][k];
    }
    console.info(a);

 这个就可以满足你的需求啊。你自己试试!

我不管你里边有什么属性,只要有undefined类型,直接干掉

本回答被网友采纳
第2个回答  2014-12-30
var a=[{"id":"4","flag":1},{"id":"3"},{"id":"2"}];,有的里面没有flag
var h= $.parseJSON(a); parse(h);
function parse(json) {
var result = [], setBody = $.map(json, function(item) {
if(typeof item.flag == 'undefined')
return { "get" : [ { "id" : item.id] };
return { "get" : [ { "id" : item.id,"flag" : item.flag ] };
});
return result;
}