Как объединить уже существующее свойство с объектом вложенного массива и добавить дополнительное свойство к объекту, используя JavaScript.
У меня есть два объекта для ввода для соответствующего идентификатора в apidata
,
переопределить уже существующие значения в объекте и добавить дополнительные свойства к объекту с помощью комментариев, как показано
Я попробовал использовать метод ниже, застрял
obj.static.forEach(e => {
if (e.id === 'trans') {
Object.assign(e, apidata);
e.amount = e.srcamount - e.fee - e.payFee;
e.netFee = e.fee + e.paymentInFee;
e.taramount = (e.srcamount - e.fee - e.payFee) * e.rate;
}
});
Входы:
var obj = {
static: [{
ctob: [{
id: "trans",
in: "credit",
out: "bank",
fee: 2,
payFee: 10,
netfee: 12, // (fee+payfee)
rate: 0.5,
srcamount: 400,
source: "SG",
target: "TH",
amount: 388, //(amount-netfee)
taramount: 194 //(amount*rate)
}, {
id: "fund",
in: "credit",
out: "bank",
fee: 1,
payFee: 8,
netfee: 9, // (fee+payfee)
rate: 0.5,
srcamount: 400,
source: "SG",
target: "TH",
amount: 391, //(amount-netfee)
taramount: 195.5 //(amount*rate)
}]
}, {
btob: [{
id: "trans",
in: "bank",
out: "bank",
fee: 0,
payFee: 5,
netfee: 5, // (fee+payfee)
rate: 0.5,
srcamount: 400,
source: "SG",
target: "TH",
amount: 395, //(amount-netfee)
taramount: 197.5 //(amount*rate)
}, {
id: "fund",
in: "bank",
out: "bank",
fee: 0,
payFee: 6,
netfee: 6, // (fee+payfee)
rate: 0.5,
srcamount: 400,
source: "SG",
target: "TH",
amount: 394, //(amount-netfee)
taramount: 197 //(amount*rate)
}]
}]
}
var apidata = {
srcamount: 400,
source: "SG",
target: "TH",
fee: 14,
rate: 4.97587
}
Ожидаемый результат:
result = [{
ctob: [{
id: "trans",
in: "credit",
out: "bank",
fee: 14,
payFee: 10,
netfee: 24, // (fee+payfee)
rate: 4.97587,
srcamount: 400,
source: "SG",
target: "TH",
amount: 376, //(amount-netfee)
taramount: 1,
870.92 //(amount*rate)
}],
btob: [{
id: "trans",
in: "bank",
out: "bank",
fee: 14,
payFee: 5,
netfee: 19, // (fee+payfee)
rate: 4.97587,
srcamount: 400,
source: "SG",
target: "TH",
amount: 381, //(amount-netfee)
taramount: 154.24 //(amount*rate)
}]
}]