【微信小程序】商品多规格的sku组件完整代码

【微信小程序】商品多规格的sku组件完整代码,第1张

页面使用组件:

记得注册组件:

commodity-sku.wxml

commodity-sku.js

commodity-sku.wxss

  对于做移动端开发而言,算法,数据结构似乎只用于面试装B用,数据的查找,排序,增加,删除,如果一个for循环不能解决,那么再嵌套一层循环,如果再不行,那就再嵌套...。前段时间看到一篇文章说,面试招的是高级工程师,做的事情是一个初级程序员的事,似乎有点道理,但也不完全对,有时候还真的需要一些思路解决特殊的问题。

在做商城sku库存判断开发的过程中,就发现了一个使用很多层循环不能解决的问题,需要有特殊的思路。

选中某个元素的时候,如果其他元素和当前选择的元素组合成的sku没有库存,则把其他元素置灰,不可点击。

具体情况是这样的, 在购物袋中(商品详情页中),用户在点击购买或者加入购物车时需要选择所有的规则,但是不是所有规则下的属性都是可选的,比如上面的图片如果选择了黑色二段,那么鞋码的36,41是不可选的,因为没有库存,如果按照上面的图中的所有可以产生的sku数总共有多少种呢

黑色 三段 50

黑色 三段 36

黑色 三段 41

黑色 二段 40

黑色 二段 36

黑色 二段 41

白色 三段 50

白色 三段 36

白色 三段 41

白色 二段 40

白色 二段 36

白色 二段 41

总共有2x2x3 = 12 种

skus是所有属性元素拼接可能产生的sku个数,包括有库存和没有库存的sku,单个sku使用sku对象中的store参数判断是否有库存,sku对象下的select_spec_id是specs对象对应的spec_value_id的多个元素使用‘_’拼接组合,比如黑色,二段,那么拼接的select_spec_id组合为3_5。

  初始化时当我们想要点击黑色,判断三段和二段可不可以选,如果判断三段可以选了,又要鞋码40,36,41码是否可以选,回头还别忘了白色是否可选。貌似需要使用三层循环判断,结果应该可以判断出来,但是问题是如果鞋子又增加了一个属性,那么理论上又得增加一层循环,常规思路好像很不好解决,逻辑难厘清,较劲脑汁,想不出什么好办法,但是又觉得应该有办法,毕竟这个问题做过sku库存判断的前段同学都实现过,然后在网上搜了一篇的文章,得到了提示 https://www.jianshu.com/p/7a17b4179225

  初始化时当我们想要点击黑色,判断三段是否可以点击,那么只需要判断 黑色_三段是否可以点击,不需要做其他判断,如果已经选则了黑色_三段,判断40是否可以点击,那么只需要判断 黑色_三段_40是否可以点击,不需要判断其他的元素。

思路似乎就清晰了许多

现在服务端返回的12个sku中,列举一下元素spec_value_id拼接和是否有库存


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11536606.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存