zoukankan      html  css  js  c++  java
  • 就是不想用if

    好久没写代码了。最近一个POC项目的需求,找到指定产品的类型,显示对应的名称。理论上一个产品只有一种类型,如果遇到数据问题,一个产品有多种类型显示任一种就好。

    最简单最直白的实现。因为if的存在,复杂度也最高。

    1 var discontinuedProduct = ['10002', '1011', '01014'];
    2 var overStockProduct = ['10003', '1010', '01013'];
    3 var eolProduct = ['10004', '1009', '01012'];
    4 
    5 if (discontinuedProduct.includes(sku)) document.getElementsByClassName('distressed-text')[0].innerText = 'Discontinued';
    6 if (discontinuedProduct.includes(sku)) document.getElementsByClassName('distressed-text')[0].innerText = 'OverStock';
    7 if (discontinuedProduct.includes(sku)) document.getElementsByClassName('distressed-text')[0].innerText = 'End of Life';

    把if语句改成或运算,看起来清爽多了。因为短路计算,只有产品没有类型的时候才会判断三次。

    1 var distressedTexts = ['', 'Discontinued', 'OverStock', 'End of Life'];
    2 var textIndex = eolProdoct.includes(sku) * 3 || overStockProduct.includes(sku) * 2 || discontinuedProduct.includes(sku) * 1 || 0
    3 
    4 document.getElementsByClassName('distressed-text')[0].innerText = distressedTexts[textIndex];

    改用数据驱动的方式,把判断转移到findIndex方法中去,代码更简单了。

    1 var distressedProducts  = [
    2   ['10002', '1011', '01014'], //discontinued product
    3   ['10003', '1010', '01013'], //overStock product
    4   ['10004', '1009', '01012'] //eol product
    5 ];
    6 var distressedTexts = ['', 'Discontinued', 'OverStock', 'End of Life'];
    7 
    8 var distressedType = distressedProducts.findIndex(item => item.includes(sku));
    9 document.getElementsByClassName('distressed-text')[0].innerText = distressedTexts[distressedType + 1];
  • 相关阅读:
    转载:SqlServer数据库性能优化详解
    复杂事件处理技术概览(一)
    Netty : writeAndFlush的线程安全及并发问题
    如何在RCP程序中添加一个banner栏
    AChecker + Selenium2对需要登录的页面进行自动化可访问性测试
    5分钟开启Esper之旅
    使SWT/JFace支持跨平台
    Ubuntu上Docker安装Trouble Shooting
    使Docker Container支持运行SWT程序
    Xcode5中如何切换Storyboards为xib
  • 原文地址:https://www.cnblogs.com/cypine/p/8047523.html
Copyright © 2011-2022 走看看