sku-algorithm
sku-algorithm copied to clipboard
思路很好,但是代码逻辑还是有漏洞
specList: [ { title: "颜色", list: ["白色", "红色"] }, { title: "内存", list: ["16G", "32G"] }, { title: "容量", list: ["150ml", "300ml", "450ml"] } ], specCombinationList: [ { id: "1", specs: ["红色", "16G", "450ml"] }, { id: "2", specs: ["红色", "32G", "150ml"] }, { id: "3", specs: ["红色", "32G", "300ml"] }, { id: "4", specs: ["红色", "32G", "450ml"] }, { id: "5", specs: ["白色", "16G", "150ml"] }, { id: "6", specs: ["白色", "16G", "300ml"] }, { id: "7", specs: ["白色", "16G", "450ml"] }, { id: "8", specs: ["白色", "32G", "150ml"] }, { id: "9", specs: ["白色", "32G", "300ml"] }, { id: "10", specs: ["白色", "32G", "450ml"] } ]
用此数据,无法正常渲染结果。
逻辑上确实有漏洞,没有理由能在同级能建立连线
@biwin-wangli @kkkelicheng 谢谢指出问题,我会积极寻找解决方法,如果有很好的解决方法,请回复我,或者给我提PR ,谢谢
@kkkelicheng
逻辑上确实有漏洞,没有理由能在同级能建立连线
同级连线是指:在同一级的规格中,选择了某一项,需要判断同级中的其他项,是否可选。
是的
我尝试换了一种思路,https://github.com/mcfly001/choose-sku
说以下整体思路 当我们选择红色的时候,我们过滤得到id为1,2,3,4这几个sku的specs中包含红色,那我们就将这些specs合并,同时去重,获取到16G、32G、150ml、300ml、450ml这几个特性值可以选择。
当我们选择红色、32G的时候我们发现id为2,3,4这几个sku包含了红色且包含了32G,通过合并和去重之后获取到150ml,300ml,450ml这3个节点可选。
以此类推选择在增加一个也只是多了一个过滤条件,最后去重得到的特性值就是可选的,同时我们还能获取到价格区间以及剩余库存
@mcfly001 能给出代码实现吗?
@mcfly001 能给出代码实现吗?
https://github.com/mcfly001/choose-sku
@xieyezi 我用加权图改了下,测了几个case没啥问题,你看看呢pr
@Hilbertangers 谢谢提供解决方法,可以具体讲讲思路吗?
@mcfly001 尝试了一下你的解决思路。和我一开始的解决思路如出一辙,只不过我发现你的方法可能有个问题,就是当我把三项都选择完了之后,其他可选的组合都被禁用了,这种情况其实不应该出现的。

出现如上情况,其实【"白色", "32G", "300ml"】这种情况是仍可以选的,所以这里不应该禁用白色。
@Hilbertangers 谢谢提供解决方法,可以具体讲讲思路吗?
我的思路是对无向图的边进行加权,每一种规格是一个权值,之后绘制邻接矩阵的时候把权值代替0,1的布尔值,然后在取交集判断的时候,判断是否相等就行了(即所选顶点是否在同一个权级的规格内)。 实现的时候发现存在单边多权的情况,需要做下特殊处理。 刚刚又加了个commit,fix了个bug
@Hilbertangers 谢谢提供解决方法,可以具体讲讲思路吗?
我的思路是对无向图的边进行加权,每一种规格是一个权值,之后绘制邻接矩阵的时候把权值代替0,1的布尔值,然后在取交集判断的时候,判断是否相等就行了(即所选顶点是否在同一个权级的规格内)。 实现的时候发现存在单边多权的情况,需要做下特殊处理。 刚刚又加了个commit,fix了个bug
试了一下你的代码,先选白色,然后再选kg 就报错了
@Hilbertangers 谢谢提供解决方法,可以具体讲讲思路吗?
我的思路是对无向图的边进行加权,每一种规格是一个权值,之后绘制邻接矩阵的时候把权值代替0,1的布尔值,然后在取交集判断的时候,判断是否相等就行了(即所选顶点是否在同一个权级的规格内)。 实现的时候发现存在单边多权的情况,需要做下特殊处理。 刚刚又加了个commit,fix了个bug
试了一下你的代码,先选白色,然后再选kg 就报错了
感谢,已经修改了,再试试呢
两组规格没问题,3组就出问题了,2X2X3 一共12种sku, 如果少了某一个,剩余11中sku,这个图和12中sku没有区别
两组规格没问题,3组就出问题了,2X2X3 一共12种sku, 如果少了某一个,剩余11中sku,这个图和12中sku没有区别
@mouday 可以提供下用例数据吗,像1楼那种
两组规格没问题,3组就出问题了,2X2X3 一共12种sku, 如果少了某一个,剩余11中sku,这个图和12中sku没有区别
@mouday 可以提供下用例数据吗,像1楼那种
我的数据和一楼类似
两组规格没问题,3组就出问题了,2X2X3 一共12种sku, 如果少了某一个,剩余11中sku,这个图和12中sku没有区别
@mouday
试了下你说的情况 没有复现😢