gpt4 book ai didi

javascript - 动态组合数组和对象

转载 作者:行者123 更新时间:2023-12-01 00:12:32 25 4
gpt4 key购买 nike

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

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

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 个计划,并根据它们所属的结算周期进行分组。我想知道如何过滤 planArray 并根据 billingCycle 属性对其进行分组,然后将其相应地嵌套在与 billingCycle 属性同名的数组中。希望这是有道理的。

我正在 React 中进行此操作,并可以使用 Redux Saga。

最佳答案

我会使用这样的东西:

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

// use bCycles as lookup object
let bCycles = {};
for (const {billingCycle: interval, currency: name, value: amount} of plansArray) {
// if there isn't yet an object present for a certain interval create a new one
if (!bCycles[interval]) bCycles[interval] = {interval, plan: []};
// push an object with the name and amount to the interval
bCycles[interval].plan.push({currency: {name, amount}});
}

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

console.log(objectToSend);

该解决方案利用object destructing assignment .

此答案并未考虑每个计费周期最多 4 个计划,但您可以通过在插入数组之前添加 bCycles[interval].plan.length 检查来添加这一点。

我不确定您是否想将具有相同时间间隔和货币的计划分组在一起,但决定将其排除在外,因为我无法从问题中暗示这一点。

关于javascript - 动态组合数组和对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59975201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com