sku展示php,前端如何展示商品属性:SKU多维属性状态判断算法的应用

本文介绍了在前端展示商品属性时,如何处理SKU的多维属性状态判断,避免无效的属性组合展示给用户。通过理解SKU的学术概念,分析后端数据结构,并提出一种算法,通过生成所有有效属性子集(幂集)来判断用户选择的路径是否可行,从而提高用户体验。
摘要由CSDN通过智能技术生成

作者 | 周琪力

编辑 | 尾尾

本文为前端之巅周琪力原创,未经作者许可禁止转载。

问题描述

这个问题来源于选择商品属性的场景。比如我们买衣服、鞋子这类物件,一般都需要我们选择合适的颜色、尺码等属性

7a17b4179225

color_size

先了解一下 SKU 的学术概念吧

最小库存管理单元(Stock Keeping Unit, SKU)是一个会计学名词,定义为库存管理中的最小可用单元,例如纺织品中一个SKU通常表示规格、颜色、款式,而在连锁零售门店中有时称单品为一个SKU。最小库存管理单元可以区分不同商品销售的最小单元,是科学管理商品的采购、销售、物流和财务管理以及POS和MIS系统的数据统计的需求,通常对应一个管理信息系统的编码。 —— form wikipedia 最小存货单位

简单的结合上面的实例来说: SKU 就是你上购物网站买到的最终商品,对应的上图中已选择的属性是:颜色 黑色 - 尺码 37

我先看看后端数据结构一般是这样的,一个线性数组,每个元素是一个描述当前 SKU 的 map,比如:

[

{ "颜色": "红", "尺码": "大", "型号": "A", "skuId": "3158054" },

{ "颜色": "白", "尺码": "中", "型号": "B", "skuId": "3133859" },

{ "颜色": "蓝", "尺码": "小", "型号": "C", "skuId": "3516833" }

]

前端展示的时候显然需要 group 一下,按不同的属性分组,目的就是让用户按属性的维度去选择,group 后的数据大概是这样的:

{

"颜色": ["红", "白", "蓝"],

"尺码": ["大", "中", "小"],

"型号": ["A", "B", "C"]

}

对应的在网页上大概是这样的 UI

7a17b4179225

ui_demo

这个时候,就会有一个问题,这些元子属性能组成的集合(用户的选择路径) 远远大于 真正可以组成的集合,比如上面的属性集合可以组合成一个 笛卡尔积,即。可以组合成以下序列:

[

["红", "大", "A"], // ✔

["红", "大", "B"],

["红", "大", "C"],

["红", "中", "A"],

["红", "中", "B"],

["红", "中", "C"],

["红", "小", "A"],

["红", "小", "B"],

["红", "小", "C"],

["白", "大", "A"],

["白", "大", "B"],

["白", "大", "C"],

["白", "中", "A"],

["白", "中", "B"], // ✔

["白", "中", "C"],

["白", "小", "A"],

["白", "小", "B"],

["白", "小", "C"],

["蓝", "大", "A"],

["蓝", "大

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值