0%

JS 判断对象的值是否全true

问题

只要有一个对象的值为非 true,则返回 true

1
2
3
4
5
6
let test = {
a: true,
b: true,
c: true,
d: false,
};

解决方法

我自己开始傻傻的写了个循环去判断,群里也顺便问了一下有没有更优雅的解法,还真有

我的写法

1
2
3
4
5
6
7
8
9
10
11
function isTrue(params) {
for (const key in params) {
if (Object.hasOwnProperty.call(params, key)) {
const element = params[key];
if (element !== true) {
return false;
}
}
}
return true;
}

群友(@北京-菜鸟-板板/yt )的解法

1
Object.values(test).every((item) => item === true);

大佬的解法是不是更优雅?

后记

后来期望加一个可以复位对象的值为 false 的方法

1
2
3
4
5
6
7
8
9
function resetFalse(params) {
let obj = {};
for (const key in params) {
if (Object.hasOwnProperty.call(params, key)) {
obj[key] = false;
}
}
return obj;
}

在群里问了一圈,被 diss 了,没错,被 diss 了。这都是简单的基操,,我就是想提升一下自己,学习更好的解法。