上面的规格可以无限增加,规格值也是可以无限增加,那么下面的是怎么循环出来的类似这种
skuData: [
{
skuname: "",
skus: [1, 2, 3]
},
{
skuname: "",
skus: [4, 5, 6]
},
{
skuname: "",
skus: [7, 8, 9]
}
]
循环成[14,15,16,17,18,19,24,25,26,27,28,29,34,35,36,37,38,39]
1
duzhihao OP 求大佬给个思路,目前实在无从下手啊。
|
2
cdwyd 2019-01-09 23:21:01 +08:00
感觉有点没说清楚,只看你给的例子的话,把下面的两个列表合成一个 然后 用第一个列表里面的元素分别和合成后的元素组合就是了。
|
3
feiyuanqiu 2019-01-09 23:25:10 +08:00 via Android
什么意思?图看懂了,文字没看懂。下面的列表不就是上面设置的规格的笛卡尔积么
|
4
guiqiqi 2019-01-09 23:27:01 +08:00 via iPhone
刚刚写完相关功能,我这边做的 spu 生成 sku,将属性值构造多叉树,遍历全部叶子结点可得^_^
|
5
okchum 2019-01-10 04:15:56 +08:00
Cartesian product
|
6
meteor957 2019-01-10 09:41:59 +08:00
mark
|
7
duzhihao OP 多谢大佬的回答,个人水平有限还不能理解笛卡尔树的概念但是利用 js 里面的 reduce 勉强实现了效果
``` javascript function calcDescartes (array) { if (array.length < 2) return array[0] || []; return [].reduce.call(array, function (col, set) { var res = []; col.forEach(function (c) { set.forEach(function (s) { var t = [].concat(Array.isArray(c) ? c : [c]); t.push(s); res.push(t); }) }); return res; }); } console.log(calcDescartes([[1,2,3],['a','b','c'],['e','f']])); ``` |