#javascript #jquery #arrays #object
#javascript #jquery #массивы #объект
Вопрос:
У меня есть два разных объекта массива и функция, которая использует объекты и выполняет вычисления. Я хотел бы знать, как выполнить вычисления и получить все объекты вложенного массива в JavaScript, как показано ниже (ожидаемый результат).
var obj = [
{
name: "insta",
fee: "2",
rate: "2.00"
},
{
name: "transfer",
fee: "1",
rate: "3.00"
}
],
var query =
{
country: "SG",
sourceamount: "4,000"
}
function config(objectdata, querydata){
let send_amount = querydata.sourceamount.replace(/,/g,"");
let fee = objectdata.fee;
let rate = objectdata.rate;
let amount_to_convert = send_amount - fee;
let receive_amount = amount_to_convert * rate;
let result_data = {send: send_amount, fees: fee, ratevalue: rate, amountvalue :amount_to_convert, receive: receive_amount}
return result_data;
}
result = config(obj, query);
Expected Output:
result = [
{
name: "insta",
fees: "2",
ratevalue: "2.00",
amountvalue: "3998",
receive: "7976"
country: "SG",
sourceamount: "4,000"
},
{
name: "transfer",
fees: "1",
ratevalue: "3.00",
amountvalue: "3997",
receive: "11,991"
country: "SG",
sourceamount: "4,000"
}
]
Комментарии:
1. где вы это повторяли?
Ответ №1:
Вам нужно отобразить obj
массив и сконструировать свой вывод.
ПРИМЕЧАНИЕ: Вам необходимо проанализировать fee-rate-sourceamount
значения, если вы хотите выполнить арифметические операции.
var obj = [{
name: "insta",
fee: "2",
rate: "2.00"
}, {
name: "transfer",
fee: "1",
rate: "3.00"
}];
var query = {
country: "SG",
sourceamount: "4,000"
};
function config(objectdata, querydata) {
let result_data = objectdata.map(function(obj) {
let send_amount = parseInt(querydata.sourceamount.replace(/,/g, ""));
let fee = parseInt(obj.fee);
let rate = parseInt(obj.rate);
let amount_to_convert = send_amount - fee;
let receive_amount = amount_to_convert * rate;
return {
name: obj.name,
fees: fee,
ratevalue: rate,
amountvalue: amount_to_convert,
receive: receive_amount,
country: querydata.country,
sourceamount: send_amount,
}
});
return result_data;
}
console.log(config(obj, query));
Ответ №2:
Вы можете использовать .map для зацикливания вашего массива и построения всего вашего объекта.
var obj = [{
name: "insta",
fee: "2",
rate: "2.00"
},
{
name: "transfer",
fee: "1",
rate: "3.00"
}
];
var query = {
country: "SG",
sourceamount: "4,000"
}
function config(objectdata, querydata) {
return objectdata.map(function(obj) {
let send_amount = querydata.sourceamount.replace(/,/g, "");
let fee = obj.fee;
let rate = obj.rate;
let amount_to_convert = send_amount - fee;
let receive_amount = amount_to_convert * rate;
return {
name: obj.name,
fees: fee,
ratevalue: rate,
amountvalue: amount_to_convert,
receive: receive_amount,
...querydata
}
});
}
result = config(obj, query);
console.log(result)
Комментарии:
1. По-прежнему не соответствует ожидаемому результату.
2. Откуда
send
берется свойство. Иsourceamount
какой ожидаемый результат и4000
должен быть"4,000"
3. @MaheerAli Взято из кода примера OP. И спасибо за
"4,000"
4. Я ошибочно ввел, что в старом коде
sourceamount
былоsend
свойство. Но теперь все в порядке, так что 1
Ответ №3:
const array = [{
name: "insta",
fee: "2",
rate: "2.00"
}, {
name: "transfer",
fee: "1",
rate: "3.00"
}]
const query = { country: "SG", sourceamount: "4,000" }
function config (data, querydata) {
const send_amount = querydata.sourceamount.replace(/,/g,"")
return data.map(({ fee, rate, ...rest }) => ({
fees: fee,
ratevalue: rate,
amountvalue: send_amount - fee,
receive: ( send_amount - fee) * rate,
...rest,
...querydata
}))
}
result = config(array, query)
console.log(result)