也许我错过了一些东西,但是有没有更好/更简洁的方式来编写这样的内容:
var a=1,
b=2,
c=3;
if(a===1 && b===1 && c===1){ do something };
或
if(a===1 || b===1 || c===1){ do something };
我试图保持代码较小,所以我不会像我遇到的页面中建议的那样寻求遍历数组等。我认为会有一些东西(至少对于第一个例子来说它们都是相同的)看起来像
if(a=b=c===1){ do something? };
谢谢!
最佳答案
您可以采用函数方法,创建一个简单的比较函数生成器:
function eq(val) {
return function(x) {
return x === val
}
}
然后使用.every
作为&&
:
if ([a,b,c].every(eq(1))) {
// all were equal
}
或者使用.some
作为||
:
if ([a,b,c].some(eq(1))) {
// at least one was equal
}
<小时/>
您还可以创建一个接收条件结果的函数以及一个在条件成立时调用的函数:
function when(cond, fn) {
if (cond)
fn.call.apply(fn, [].slice.call(arguments, 2))
}
并将您的 if
主体封装到一个函数中...
function doIt(arg1, arg2) {
console.log("doing it!")
console.log(this, arg1, arg2)
}
<小时/>
然后像这样使用它:
when([a,b,c].every(eq(1)), doIt, null, "foo", "bar")
when
的第三个参数设置回调的 this
值,后续参数将作为参数传递给回调。
关于javascript - 在 Javascript/jQuery 中比较多个元素值的简洁方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16751883/