问答

前端面试:设计一个数据结构

作者:admin 2021-06-07 我要评论

面试官说有一个业务场景,比如某件商品的子类型有三项,尺码、颜色、类型。 用户点击这三项没有顺序,有可能先点尺码再点别的,也有可能先点颜色。 但是每点击一...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

面试官说有一个业务场景,比如某件商品的子类型有三项,尺码、颜色、类型。
用户点击这三项没有顺序,有可能先点尺码再点别的,也有可能先点颜色。
但是每点击一项后,其它两项都会跟着改变。

比如先点了M尺码后,颜色里断货的置灰,类型里断货的也置灰。

再点颜色里的红色,范围会继续缩小,尺码里断货的置灰,类型里断货的也置灰。

最后点类型里的某项,尺码和颜色断货的也会置灰。

  1. 前端需要后端返回什么样的数据结构比较好?
  2. 每次点击前端这边怎么处理逻辑?

类似于图片上的业务场景,虽然图片上只有两项,面试官问的三项更复杂
image

求大佬解答,谢谢

###

有现成的可以参考
vant sku 对象结构

###
{
    spec : [
        {
            code : 'size',
            label : '尺码',
            map : {
                'S' : '小码',
                'M' : '中码',
                'L' : '大码',
                'XL' : '加大码',
            },
        },
        {
            code : 'color',
            label : '颜色',
            map : {
                'red': '红色',
                'white' : '白色',
                'black' : '黑色',
            },
        },
    ],
    item : {
        'S-red' : {
            'label' : '小码-红色',
            'price' : 15.00,
            'stock' : 20,
        },
        'L-white' : {
            'label' : '大码-白色',
            'price' : 15.00,
            'stock' : 5,
        },
    },
}

spec 是规格,数组顺序是和下面 item 的键值拼接顺序一致
sizespec 第一项,colorspec 第二项
item 的键值按上面的顺序进行拼接,必须保持一致顺序

spec 规格项组合 键值在 item 里不存在的就是没有这个组合类型的商品,键值存在,但 stock 是0,就是没有库存

###
  1. 其实不需要很复杂的数据结构
  2. 就拿图中的场景举例,上下一乘 120,每次都全遍历也是 ms 级的运算量。即使再加一个维度,10个选项,1200 的 sku,也一样。
  3. 综上所述,因为场景本身的限制,没有很好的答案

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • 前端面试:设计一个数据结构

    前端面试:设计一个数据结构

  • 使用docker-compose搭建redis哨兵,启

    使用docker-compose搭建redis哨兵,启

  • Spring MVC,在进入Controller调用Actio

    Spring MVC,在进入Controller调用Actio

  • JAVA集合框架中的final

    JAVA集合框架中的final

腾讯云代理商
海外云服务器