动态组合数组和对象

问题描述 投票:0回答:1

我正在创建一个嵌套表单,需要将其发送到后端以将产品添加到数据库中。

我在状态下创建了一个计费周期数组。我正在创建的另一个数组是对象数组。

let cyclesArray = [annual, monthly, weekly];
let plansArray = [ {value:200, currency: "EUR", billingCycle:"annual"}, {value:220, currency: "USD", billingCycle:"monthly"},{value:20, currency: "CHF", billingCycle:"monthly"}, ....]

将数据发送到API之前,我需要将数组格式化为一个看起来像这样的对象:

let objectToSend = {
 name: "whatever",
 bCycles: [
   {
     interval: "annual",
     plan: [
       {
         currency: { name: "EUR", amount: 220 },
       },
       {
         currency: { name: "CHF", amount: 200 },
       },
     ],
   },
   {
     interval: "monthly",
     plan: [
       {
         currency: { name: "CHF", amount: 202220 },
       },
       {
         currency: { name: "EUR", amount: 2021110 },
       },
     ],
   },
 ],
}

[基本上,我正在创建一个对象,它是一个计费周期数组(包含对象数组的数组)。

每个帐单周期最多可包含4个计划,并按其所属的帐单周期进行分组。我想知道如何过滤billsArray并根据billingCycle属性对其进行分组,然后将其相应地嵌套在与billingCycle属性同名的数组中。希望这有道理。

我正在做出反应,并准备了Redux Saga。

javascript
1个回答
0
投票

我会用这样的东西:

let plansArray = [{value:200, currency: "EUR", billingCycle:"annual"}, {value:220, currency: "USD", billingCycle:"monthly"},{value:20, currency: "CHF", billingCycle:"monthly"}];

let bCycles = {};
for (const {billingCycle: interval, currency: name, value: amount} of plansArray) {
  if (!bCycles[interval]) bCycles[interval] = {interval, plan: []};
  bCycles[interval].plan.push({name, amount});
}

let objectToSend = {name: "whatever", bCycles: Object.values(bCycles)};

console.log(objectToSend);
© www.soinside.com 2019 - 2024. All rights reserved.