位掩码
等级: 中级
很难找到一个不依赖于某种条件逻辑来实现功能的app。这几乎总是通过使用类似以下语句来执行的:
if (processAccount === true) {
/* 做一些事情 */
}
if和switch语句对于有限数量的条件语句效果很好,但如果您的app有10个或100个条件语句需要评估呢?幸运的是,还有另一种方法。
位掩码app的目标是演示如何使用位掩码来评估更长的switch序列,而不必依赖于长串的条件语句。
用户故事
- [ ] 用户可以看到一个垂直的复选框列表,列出了以下城市及其时区:
- 莫斯科:GMT +3
- 巴黎:GMT +2
- 柏林:GMT +2
- 布鲁塞尔:GMT +2
- 阿姆斯特丹:GMT +2
- 罗马:GMT +2
- 伦敦:GMT +1
- 都柏林:GMT +1
- 纽约:GMT -4
- 华盛顿特区:GMT -4
- 圣路易斯:GMT -5
- 洛杉矶:GMT -7
- 东京:GMT +9
- 北京:GMT +8
- 胡志明市:GMT +7
- 孟买:GMT +5
- [ ] 用户可以看到一个GMT搜索框,在其中可以输入一个表示GMT偏移量的整数,并点击“查找城市”按钮。
- [ ] 用户可以点击“查找城市”按钮,在输出区域显示该GMT偏移量下城市的名称。
开发者笔记
对于这个练习,开发者应该使用24个二进制位序列,每个对应于从+12到-12的GMT时区。
搜索应通过结合所需时区的位掩码与特定于城市的二进制序列来进行识别。确定一个城市是否符合搜索标准不应依赖于如下语句:
if (city[i].gmtOffset === searchOffset ) {
/* 找到了! */
}
而应该依赖于位运算。
额外功能
- [ ] 用户可以搜索不在搜索框中输入的GMT偏移量下的城市。
- [ ] 用户可以看到符合搜索标准的城市数量总结计数。