首页 > 解决方案 > 如何在 JavaScript 中基于对象值实现组合?

问题描述

我正在尝试编写一个函数来给定如下数据数组的排列:

 var selectedData={
        selectedAccount:"a1,a2",
        selectedYear:"2019,2018",
        selectedProduct:"p1,p2",

    }

我想要这样的结果:

[
    {
        selectedAccount: "a1",
        selectedYear: "2018",
        selectedProduct: "p1",
    },
    {
        selectedAccount: "a1",
        selectedYear: "2018",
        selectedProduct: "p2",
    },
    {
        selectedAccount: "a1",
        selectedYear: "2019",
        selectedProduct: "p1",
    },
    {
        selectedAccount: "a1",
        selectedYear: "2019",
        selectedProduct: "p2",
    },
    {
        selectedAccount: "a2",
        selectedYear: "2018",
        selectedProduct: "p1",
    },
    {
        selectedAccount: "a2",
        selectedYear: "2018",
        selectedProduct: "p2",
    },
    {
        selectedAccount: "a2",
        selectedYear: "2019",
        selectedProduct: "p1",
    },
    {
        selectedAccount: "a2",
        selectedYear: "2019",
        selectedProduct: "p2",
    },
]

我一直在为某种类型的递归函数苦苦挣扎,没有运气!谁能给出实现上述结果的想法

提前致谢

标签: javascripttypescript

解决方案


只需创建嵌套for循环,如下所示:

let selectedData = {
    selectedAccount: "a1,a2",
    selectedYear: "2019,2018",
    selectedProduct: "p1,p2",
};

let result = [];
for (let selectedAccount of selectedData.selectedAccount.split(",")) {
    for (let selectedYear of selectedData.selectedYear.split(",")) {
        for (let selectedProduct of selectedData.selectedProduct.split(",")) {
            result.push({ selectedAccount, selectedYear, selectedProduct });
        }
    }
}

console.log(result);


推荐阅读