我一直在用下面的对象数组做笛卡尔积。
[
{
"name": "Size",
"values": ["10", "39"]
},
{
"name": "Color",
"values": ["Yellow", "Pink"]
},
{
"name": "Country",
"values": ["USA", "UK"]
}
]
我想生成这些属性的笛卡尔积,这样输出就是一个如下形式的数组:
[
[
{ id: 1, name: 'Size', value: '10' },
{ id: 2, name: 'Color', value: 'Yellow' },
{ id: 3, name: 'Country', value: 'USA' },
],
[
{ id: 1, name: 'Size', value: '10' },
{ id: 2, name: 'Color', value: 'Yellow' },
{ id: 3, name: 'Country', value: 'UK' },
],
[
{ id: 1, name: 'Size', value: '39' },
{ id: 2, name: 'Color', value: 'Yellow' },
{ id: 3, name: 'Country', value: 'USA' },
],
[
{ id: 1, name: 'Size', value: '39' },
{ id: 2, name: 'Color', value: 'Yellow' },
{ id: 3, name: 'Country', value: 'UK' },
],
[
{ id: 1, name: 'Size', value: '10' },
{ id: 2, name: 'Color', value: 'Pink' },
{ id: 3, name: 'Country', value: 'USA' },
],
[
{ id: 1, name: 'Size', value: '10' },
{ id: 2, name: 'Color', value: 'Pink' },
{ id: 3, name: 'Country', value: 'UK' },
],
[
{ id: 1, name: 'Size', value: '39' },
{ id: 2, name: 'Color', value: 'Pink' },
{ id: 3, name: 'Country', value: 'USA' },
],
[
{ id: 1, name: 'Size', value: '39' },
{ id: 2, name: 'Color', value: 'Pink' },
{ id: 3, name: 'Country', value: 'UK' },
],
];
2条答案
按热度按时间6gpjuf901#
这里有一个简洁的递归方法:
输出:
66bbxpm52#
下面是基于前面答案的非递归解决方案