多规格商品排列组合js
时间: 2023-08-18 07:07:02 浏览: 52
实现多规格商品排列组合的方法有很多,下面是一种比较简单的实现方法:
1. 首先,我们需要定义一个包含所有规格的数组,如下所示:
```
var specs = [
['颜色', ['红色', '蓝色']],
['尺寸', ['S', 'M', 'L']],
['材质', ['棉', '丝绸']]
];
```
其中,specs 数组的第一个元素是规格名称,第二个元素是规格值的数组。
2. 接下来,我们需要获取所有规格的排列组合,可以使用递归的方式实现,如下所示:
```
function getSpecsCombination(specs, index, result, current) {
if (index >= specs.length) {
result.push(current);
return;
}
for (var i = 0; i < specs[index][1].length; i++) {
var next = current.slice();
next.push(specs[index][1][i]);
getSpecsCombination(specs, index + 1, result, next);
}
}
var result = [];
getSpecsCombination(specs, 0, result, []);
console.log(result);
```
上述代码中,getSpecsCombination 函数接受四个参数:specs 表示规格数组,index 表示当前处理的规格索引,result 表示保存结果的数组,current 表示当前已经选择的规格值组合。当 index 大于等于 specs 数组的长度时,表示已经处理完所有规格,此时将 current 添加到 result 数组中。
在函数内部,我们遍历当前规格的所有值,然后递归调用自身,处理下一个规格。在递归调用时,将当前规格值添加到 current 数组中,这样就能生成所有规格值的组合。
3. 最后,我们可以将所有组合与商品信息进行关联,生成商品列表。代码如下所示:
```
var items = [
{ name: '商品1', price: 10, specs: ['红色', 'S', '棉'] },
{ name: '商品2', price: 20, specs: ['蓝色', 'M', '丝绸'] },
{ name: '商品3', price: 30, specs: ['红色', 'L', '棉'] },
{ name: '商品4', price: 40, specs: ['蓝色', 'S', '丝绸'] },
];
for (var i = 0; i < result.length; i++) {
var specsCombination = result[i];
var name = '';
var price = 0;
for (var j = 0; j < specsCombination.length; j++) {
var specName = specs[j][0];
var specValue = specsCombination[j];
name += specValue + ' ';
for (var k = 0; k < items.length; k++) {
if (items[k].specs[j] === specValue) {
price += items[k].price;
break;
}
}
}
console.log(name + '- 价格: ' + price);
}
```
上述代码中,我们遍历所有规格值组合,然后根据规格值组合查找对应的商品信息,计算商品总价格,并将商品名称和价格输出到控制台。
以上就是一个简单的多规格商品排列组合的实现方法,可以根据具体需求进行修改和扩展。