Как получить все объекты во вложенном массиве после выполнения вычислений в JavaScript? - PullRequest
6 голосов
/ 27 марта 2019

У меня есть два разных объекта массива, и у меня есть функция, которая использует объекты и выполняет вычисления.Я хотел бы знать, как выполнять вычисления и получать все объекты вложенных массивов в 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"
 }  
]

Ответы [ 3 ]

7 голосов
/ 27 марта 2019

Вам необходимо отобразить массив 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));
3 голосов
/ 27 марта 2019

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)
3 голосов
/ 27 марта 2019

Вы можете использовать .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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...