J'aimerais savoir comment faire fonctionner la fonction pour Forach () à l'aide de JavaScript.
La fonction ci-dessous fonctionne bien, mais comme dans p> DOTRANSCALC CODE> et DOFUNDCALC code>, le Les calculs sont similaires, y a-t-il une autre façon de faire cela. p> var objFund = [{
"sucess": "true",
"id": "fund",
"options": "others",
"fee": 3,
"tax": 0.3,
"amount": 2000
}]
var objTrans = [{
"sucess": "true",
"id": "trans",
"options": "service",
"fee": 2,
"tax": 0.4,
"amount": 1000
}]
function doTransCalc(trans) {
trans.forEach(e => {
if (e.success) {
e.rate = 2.0,
e.netFee = e.fee + e.tax,
e.amountwithfee = e.amount + e.netfee,
e.total = e.amountwithfee * e.rate;
}
})
}
function doFundCalc(fund) {
fund.forEach(e => {
if (e.success) {
e.rate = 4.0,
e.addfee = 10,
e.netFee = e.fee + e.tax,
e.amountwithfee = e.amount + e.netfee,
e.total = e.amountwithfee * e.rate;
}
})
}
doTransCalc(objTrans);
doFundCalc(objFund);
console.log(objTrans);
console.log(objFund);
4 Réponses :
Selon ma compréhension, je suppose que cela vous aidera:
function doCalc(type, arr) {
arr.forEach(e => {
if (e.success) {
e.rate = type === 'fund' ? 4.0 : 2.0,
if(type === 'fund')
e.addfee = 10;
e.netFee = e.fee + e.tax,
e.amountwithfee = e.amount + e.netfee,
e.total = e.amountwithfee * e.rate;
}
})
}
doTransCalc('trans', objTrans);
doFundCalc('fund', objFund);
@AbinThaha merci de réponse, de nombreuses valeurs clés varient, mais les clés Netfee, montantwithfee, total code> sont celui similaire,
Vous pouvez simplement appeler une fonction de l'intérieur de la fonction Il y avait aussi des problèmes avec votre code existant: p> Vérifiez les 3 extraits suivants: p> p> foreach code> avec les paramètres appropriés.
"true" code> au lieu de true code> li>
E.SUCCESS CODE> LI>
var objFund = [{
"success": true,
"id": "fund",
"options": "others",
"fee": 3,
"tax": 0.3,
"amount": 2000
}];
var objTrans = [{
"success": true,
"id": "trans",
"options": "service",
"fee": 2,
"tax": 0.4,
"amount": 1000
}];
function doTransCalc(trans) {
trans.forEach(e => alterObject.call(e, 2));
return trans;
}
function doFundCalc(fund) {
fund.forEach(e => alterObject.call(e, 4, 10));
return fund;
}
function alterObject(rate, fee) {
if (this.success) {
if (arguments.length > 2) this.addfee = fee;
this.rate = rate;
this.netFee = this.fee + this.tax;
this.amountWithFee = this.amount + this.netFee;
this.total = this.amountWithFee * this.rate;
}
return this;
}
console.log(doTransCalc(objTrans));
console.log(doFundCalc(objFund));
Vous pouvez décomposer la logique p> foreach code> tel que si (e.success) code> dans une fonction distincte: var objFund = [{
"sucess": "true",
"id": "fund",
"options": "others",
"fee": 3,
"tax": 0.3,
"amount": 2000
}];
var objTrans = [{
"sucess": "true",
"id": "trans",
"options": "service",
"fee": 2,
"tax": 0.4,
"amount": 1000
}];
function doCalc(fn) {
return function (data) {
data.forEach(e => {
if (e.success) {
fn(e)
}
})
}
}
const doTransCalc = doCalc(e => {
e.rate = 2.0,
e.netFee = e.fee + e.tax,
e.amountwithfee = e.amount + e.netfee,
e.total = e.amountwithfee * e.rate;
});
const doFundCalc = doCalc(e => {
e.rate = 4.0,
e.addfee = 10,
e.netFee = e.fee + e.tax,
e.amountwithfee = e.amount + e.netfee,
e.total = e.amountwithfee * e.rate;
});
doTransCalc(objTrans);
doFundCalc(objFund);
console.log(objTrans);
console.log(objFund);
Vous pouvez le faire avec une seule fonction et appeler votre liste avec des fonctionnalités ES6.
p>
const fundList = [{
"success": "true",
"id": "fund",
"options": "others",
"fee": 3,
"tax": 0.3,
"amount": 2000
},
{
"success": "true",
"id": "fund",
"options": "others",
"fee": 3,
"tax": 0.3,
"amount": 2000
}]
const transList = [{
"success": "true",
"id": "trans",
"options": "service",
"fee": 2,
"tax": 0.4,
"amount": 1000
},
{
"success": "true",
"id": "trans",
"options": "service",
"fee": 2,
"tax": 0.4,
"amount": 1000
}]
function calc(e, rate, addFee) {
const netFee = e.fee + e.tax;
const amountwithfee = e.amount + netFee;
return {
rate: rate,
addfee: addFee ? addFee : null,
netFee,
amountwithfee,
total: amountwithfee * rate
}
}
const newTransList = transList.filter(e => e.success === 'true').map(e => calc(e, 2));
console.log(newTransList);
const newFundList = fundList.filter(e => e.success === 'true').map(e => calc(e, 4, 10));
console.log(newFundList);
Passez toutes les différentes variables en tant que paramètres.