在Javascript中将多个条件合并成一个条件
问题描述:
如何缩短此代码?我想返回除了 “abc” 或 “某某” 或 “焊接工艺评定”在Javascript中将多个条件合并成一个条件
return this.value != "abc" && this.value != "xyz" && this.value != "pqr";
答
可以使用阵列中的所有值:
return ["abc","xyz","pqr"].indexOf(this.value) == -1;
或对象:
return !({"abc":1,"xyz":1,"pqr":1}).hasOwnProperty(this.value);
答
2最常用的方法是:
-
正则表达式
/^(abc|xyz|pqr)$/.test(this.value)
-
对象属性查找
THIS.VALUE在({ 'ABC':1 'XYZ':1, '焊接工艺评定':1})
注意,正则表达式为基础的解决方案(#1)肯定会高于普通的比较(您的版本)或财产的查找速度较慢(#2) 。
此外,请记住财产查找是不是很可靠,因为它可能会针对与命名相同的任何Object.prototype.*
性质任意键报告误报(如“的toString”,“的valueOf”等)
令人惊讶的是,第一条语句在IE7中给出了一个错误,但在所有其他浏览器中效果不错 – Hitz 2009-10-13 17:01:32
似乎Internet Explorer的版本7中尚未实现该方法。 – Gumbo 2009-10-13 17:11:24
对象方案不起作用。考虑this.value ==='toString'。 您可以通过使用hasOwnProperty来修复它 – 2009-10-14 05:18:38