码迷,mamicode.com
首页 > 其他好文 > 详细

就是不想用if

时间:2017-12-16 21:15:43      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:问题   方法   数据   clu   项目   复杂度   指定   运算   end   

好久没写代码了。最近一个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];

 

就是不想用if

标签:问题   方法   数据   clu   项目   复杂度   指定   运算   end   

原文地址:http://www.cnblogs.com/cypine/p/8047523.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!