Как мне получить все объекты во вложенном массиве после выполнения вычисления в JavaScript?

#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)