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()
的回调应返回一个布尔表达式,以在结果中包含项。