Skip to content

sku algorithm 最小库存单位组合选择算法 sku算法实现

License

Notifications You must be signed in to change notification settings

Jamin2025/stock-keeping-unit-algorithm

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SKU(stock-keeping-unit: 最小度量单位) 算法的实现

开发商城项目遇到的现实问题

1. 算法应用场景

在网购衣服时,提前知道某些属性组合已经不可买(置灰),例有如下属性:

颜色 红色 蓝色 白色
尺寸
型号 型号A 型号B 型号C

操作:

  1. 购物车模块弹起来时,将不在库存的属性置灰,例如将蓝色置灰
  2. 选择了一个颜色属性如红色,但红色-大没有货,则需要将尺寸置灰
  3. 依次...

实现过程:

  1. 对存在的 sku 组合求子集,子集作为对象的 key,value为包含这个当前属性的 sku 组合

如: 当库存中包含了一条数据, sku 组合为蓝色-中-型号A:

{
    porperty: '蓝色-中-型号A', // sku组合
    count: 2, // 库存数量
    price: 20 // 单件价格
}

将会生成这样的数据结构

// Data struct

const skuMcl = {
    '蓝色': [{porperty: '蓝色-中-型号A',count: 2,price: 20}],
    '型号A': [{...}]
    '中': [{...}],
    '蓝色-中': [{...}],
    '蓝色-型号A': [{...}],
    '中-型号A': [{...}],
    '蓝色-中-型号A': [{...}],
}
  1. 初始的时候
颜色 红色 蓝色 白色
尺寸
型号 型号A 型号B 型号C

将,颜色尺寸型号。各个属性代入到 skuMcl 对象中,若存在则可选,若不存在则置灰。

  1. 当选择了一个属性的时候(例:选择了颜色 红色

    • 红色尺寸型号,两两组合起来,查看是否在 skuMcl 对象中,在可选,不在置灰。
  2. 在选了两个属性的时候(例:选择颜色 红色的基础上,选尺寸

    因为在选红色的时候已经置灰了一部分型号的属性

    • 红色-大 和 未置灰的型号配对,查看是否在 skuMcl 对象中,在可选,不在置灰。
    • 尺寸 和除红色以外的颜色配对,查看是否在 skuMcl 对象中,在可选,不在置灰。
  3. 选三个及以上属性

    • 看前面那些属性的值因为选了当前的不可选:将原有选择项和当前比对属性未选择未置灰的构成新的组合 代入到skuMcl对象中
    • 看后面属性值是否置灰:则原有的属性,和后面每个属性中的值做配对看是否在skuMcl 对象中

About

sku algorithm 最小库存单位组合选择算法 sku算法实现

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published