Javascript 如何让Ojbect各个key的value逻辑乘

benniu
  • 32
Obj={a:true,b:false,c:true,d:false}

我想得到它们全为true或者全为False时的情况。
所以想对它们做个乘。
如果全是True 结果为 True
全是false,则为flase
如果有true也有flase, 说明key里面true/false不统一.我再另做处理

回复
阅读 246
4 个回答

找到了一个简洁的办法,使用every,分享一下:
全为true

Object.values(Obj).every(v => v); 

全为false

Object.values(Obj).every(v => !v); 

Object.values(Obj).reduce((res, val) => res && val, true)

Obj = { a: true, b: false, c: true, d: false }

function test(obj) {

    const arr = Object.values(obj)

    let result = arr[0]
    const len = arr.length

    for (let i = 1; i <= len / 2; i++) {
        if (result !== arr[i] || result !== arr[len - i]) {
            return 'unsure'
        }
    }

    return result
}

console.log(test(Obj))

按你的处理,没有办法输出的,因为你没有说出其他情况的输出啊。
全true才输出true比较简单,用 && 运算即可, 全 false才输出false其实也比较简单,用各项取反再&& 后输出再取反即可,但这都处理不了中间情况,所以没有办法最终输出的。
即你的运算规则要求不完整,状态不明确,请补充考虑完整后再说。

你知道吗?

宣传栏