JavaScript 中的布尔代数

发布于 2024-11-24 02:07:38 字数 263 浏览 0 评论 0原文

有没有办法在JS中使用布尔代数?

例如,我想循环遍历包含 true & 的数组。 false,并将其简化为仅 true 或 false。

用布尔代数来做这件事似乎是一种优雅的方式......

想做一个比较,让我只需将前一个值添加到循环的当前迭代中

[true, true, true, true] // return true

[false, true, true, true] // return false

Is there any way to use boolean algebra in JS?

Eg I would like to loop through an array containing true & false, and simplify it down to either only true, or false.

Doing it with boolean algebra seems like an elegant way to do it...

would like to do a comparison that lets me simply add the previous value to the current iteration of a loop

[true, true, true, true] // return true

[false, true, true, true] // return false

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

诺曦 2024-12-01 02:07:38

我认为一个简单的解决方案是

return array.indexOf(false) == -1

I think a simple solution would be

return array.indexOf(false) == -1
桃气十足 2024-12-01 02:07:38

尝试Array.reduce:

[false,true,true,true].reduce((a,b) => a && b)  // false

[true,true,true,true].reduce((a,b) => a && b) // true

Try Array.reduce:

[false,true,true,true].reduce((a,b) => a && b)  // false

[true,true,true,true].reduce((a,b) => a && b) // true
乞讨 2024-12-01 02:07:38

你的意思是:

function all(array) {
    for (var i = 0; i < array.length; i += 1)
        if (!array[i])
            return false;
    return true;
}

或者你正在寻找更复杂的东西?

You mean like:

function all(array) {
    for (var i = 0; i < array.length; i += 1)
        if (!array[i])
            return false;
    return true;
}

Or is there something more complex you're looking for?

尹雨沫 2024-12-01 02:07:38
function boolAlg(bools) {    
    var result = true;

    for (var i = 0, len = bools.length; i < len; i++) {
        result = result && bools[i]

    }

    return result;
}

或者您可以使用这种形式,这样更快:

function boolAlg(bools) {    
    return !bools[0] ? false :
        !bools.length ? true : boolAlg(bools.slice(1));
}
function boolAlg(bools) {    
    var result = true;

    for (var i = 0, len = bools.length; i < len; i++) {
        result = result && bools[i]

    }

    return result;
}

Or you could use this form, which is faster:

function boolAlg(bools) {    
    return !bools[0] ? false :
        !bools.length ? true : boolAlg(bools.slice(1));
}
红墙和绿瓦 2024-12-01 02:07:38
for(var i=0; i < array.length;++i) {
   if(array[i] == false)
      return false;
}
return true;
for(var i=0; i < array.length;++i) {
   if(array[i] == false)
      return false;
}
return true;
最美的太阳 2024-12-01 02:07:38

ES6 Array.prototype.every< /代码>

console.log([true, true, true, true].every(Boolean));
console.log([false, true, true, true].every(Boolean));

ES6 Array.prototype.every:

console.log([true, true, true, true].every(Boolean));
console.log([false, true, true, true].every(Boolean));

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文