Javascript 如何在Jquery中为列表的列表操作JSON数据

Javascript 如何在Jquery中为列表的列表操作JSON数据,javascript,jquery,json,Javascript,Jquery,Json,我有一个从mongoDB检索的JSON数据对象。其格式如下: var billData = [{ "_id": "PT155/454", "_class": "com.aventyn.hms.domain.OPDBill", "billingDate": "2017-11-20", "patientId": "PT155", "transactions": [{ "txnId": "PT155/454/1", "toBePa

我有一个从
mongoDB
检索的
JSON
数据对象。其格式如下:

var billData = [{
    "_id": "PT155/454",
    "_class": "com.aventyn.hms.domain.OPDBill",
    "billingDate": "2017-11-20",
    "patientId": "PT155",
    "transactions": [{
        "txnId": "PT155/454/1",
        "toBePaid": "0",
        "txnAmount": "0",
        "due": "0",
        "selfPay": true
    }, {
        "txnId": "PT155/454/2",
        "toBePaid": "450",
        "txnAmount": "350",
        "due": "100",
        "selfPay": false
    }]
}, {
    "_id": "PT156/455",
    "_class": "com.aventyn.hms.domain.OPDBill",
    "billingDate": "2017-11-20",
    "patientId": "PT156",
    "transactions": [{
        "txnId": "PT156/455/1",
        "toBePaid": "300",
        "txnAmount": "200",
        "due": "100",
        "selfPay": true
    }, {
        "txnId": "PT156/455/2",
        "toBePaid": "100",
        "txnAmount": "50",
        "due": "50",
        "selfPay": true
    }]
}];
我的问题是我想删除那些属性为
selfPay:false
的交易。为此,我正在执行以下操作,但不起作用:

$.each(billData, function (k, v) {
    $.each(v.transactions, function (tK, tV) {
        if (tV.selfPay == true) {
            billData[k].transactions = tV;
        }
    });
});
但是我得到的数据和我从数据库得到的数据是一样的

你知道我怎样才能做到这一点吗

谢谢你的帮助


JSFIDLE的链接是:

您可以使用和的组合来实现所需的结果(甚至不使用任何jQuery方法):

var billData=[{
“_id”:“PT155/454”,
“_类”:“com.aventyn.hms.domain.OPDBill”,
“计费日期”:“2017-11-20”,
“patientId”:“PT155”,
“交易”:[{
“txnId”:“PT155/454/1”,
“toBePaid”:“0”,
“txnAmount”:“0”,
“到期”:“0”,
“自付”:真的吗
},
{
“txnId”:“PT155/454/2”,
“toBePaid”:“450”,
“txnAmount”:“350”,
“到期”:“100”,
“自付”:错误
}
]
},
{
“_id”:“PT156/455”,
“_类”:“com.aventyn.hms.domain.OPDBill”,
“计费日期”:“2017-11-20”,
“patientId”:“PT156”,
“交易”:[{
“txnId”:“PT156/455/1”,
“toBePaid”:“300”,
“txnAmount”:“200”,
“到期”:“100”,
“自付”:真的吗
},
{
“txnId”:“PT156/455/2”,
“toBePaid”:“100”,
“txnAmount”:“50”,
“到期”:“50”,
“自付”:真的吗
}
]
}
];
var result=billData.map(bill=>{
bill.transactions=bill.transactions.filter(tran=>tran.selfPay);
退票;
});

控制台日志(结果)您可以使用和的组合来实现所需的结果(甚至不使用任何jQuery方法):

var billData=[{
“_id”:“PT155/454”,
“_类”:“com.aventyn.hms.domain.OPDBill”,
“计费日期”:“2017-11-20”,
“patientId”:“PT155”,
“交易”:[{
“txnId”:“PT155/454/1”,
“toBePaid”:“0”,
“txnAmount”:“0”,
“到期”:“0”,
“自付”:真的吗
},
{
“txnId”:“PT155/454/2”,
“toBePaid”:“450”,
“txnAmount”:“350”,
“到期”:“100”,
“自付”:错误
}
]
},
{
“_id”:“PT156/455”,
“_类”:“com.aventyn.hms.domain.OPDBill”,
“计费日期”:“2017-11-20”,
“patientId”:“PT156”,
“交易”:[{
“txnId”:“PT156/455/1”,
“toBePaid”:“300”,
“txnAmount”:“200”,
“到期”:“100”,
“自付”:真的吗
},
{
“txnId”:“PT156/455/2”,
“toBePaid”:“100”,
“txnAmount”:“50”,
“到期”:“50”,
“自付”:真的吗
}
]
}
];
var result=billData.map(bill=>{
bill.transactions=bill.transactions.filter(tran=>tran.selfPay);
退票;
});

控制台日志(结果)据我所知,最好是否定if子句。这样您就可以对照
selfPay===false
进行检查

console.log(billData);
$.each(billData,function(k,v){
    $.each(v.transactions,function(tK,tV){
        if(tV.selfPay === false ){
            billData[k].transactions.splice(tK, 1);
        }
    });
});
console.log(billData)
而且我猜你只想删除那一项。要删除单个项目,请使用
splice
功能,该功能获取要删除的项目的索引(在本例中为
tK


希望有帮助

据我所知,最好是你否定if子句。这样您就可以对照
selfPay===false
进行检查

console.log(billData);
$.each(billData,function(k,v){
    $.each(v.transactions,function(tK,tV){
        if(tV.selfPay === false ){
            billData[k].transactions.splice(tK, 1);
        }
    });
});
console.log(billData)
而且我猜你只想删除那一项。要删除单个项目,请使用
splice
功能,该功能获取要删除的项目的索引(在本例中为
tK


希望有帮助

v.transaction
应该是
v.transactions
,不是吗?是的,这是v.transactions,这只是在为这个问题打字时的一个打字错误。
v.transaction
应该是
v.transactions
,不是吗?是的,这是v.transactions,这只是在为这个问题打字时的一个打字错误。谢谢你这个问题帮了大忙。。你能告诉我,如果我必须检查2个条件,那么如果我们使用&&或| |运算符来检查不同的条件,我们可以在这里这样做吗also@VipulSingh是的,你可以
.filter()
的回调函数应返回一个布尔表达式,以在结果中包含项。谢谢。这一函数非常有用。。你能告诉我,如果我必须检查2个条件,那么如果我们使用&&或| |运算符来检查不同的条件,我们可以在这里这样做吗also@VipulSingh是的,你可以
.filter()
的回调应返回一个布尔表达式,以在结果中包含项。