javascript - 在 Javascript/jQuery 中比较多个元素值的简洁方法?

标签 javascript jquery variables comparison

也许我错过了一些东西,但是有没有更好/更简洁的方式来编写这样的内容:

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/

相关文章:

javascript - clearTimeout 在 chrome 中不起作用

基于另一个文本框值隐藏文本框的 Javascript 代码

php - 如何在下拉更改事件中调用 AJAX 请求?

javascript - 仅选择具有类名称的同级的 div 内的文本,有许多相同类名称的族

ios - 驳回一个观点会使它失去所有值(value)...... viewWillAppear 是一种治疗方法吗?

Java Integer.MIN_VALUE 的负数然后比较产生两个负数

javascript - 创建一个根据 ID 号命名的变量?

javascript - 使用 React 内联样式设置 backgroundImage

javascript - 只显示一次预加载器而不显示正文内容

Android 避免创建新对象