参见英文答案 >
Concise way to compare against multiple values 8个
if (Progress.bar.status == 'finished' || Progress.bar.status == 'uploading'){ //code here }
如何缩短这个?我想写它,而不必重复Progress.bar.status两次.
沿着以下方向的东西:
Progress.bar.status == ('finished' or 'uploading').
解决方法
我喜欢查找表:
if ({finished:1,uploading:1}[Progress.bar.status]){ //code here }
这使用一个对象来编写两个或更多个选项,甚至是侧边的引用每个选项.它也非常快,因为对象可以被缓存,没有比较逻辑或方法来调用,只需快速的属性访问驱动流程…
请注意,在某些情况下,您可能需要使用Object.create(null),然后将该空白对象与您的选项合并/扩展,如果绝对必须避免“hasOwnProperty”,“valueOf”,“toString”,“toLocaleString”,“构造函数”和一些双下划线扩展.这通常不是一个问题,但这是需要牢记的.如果您可以在不使用这些关键字的情况下生活,或者从Object.create()构建缓存的选择集合,则可以快速简便地编写“上述”之一.