问题
只要有一个对象的值为非 true
,则返回 true
let test = {
a: true,
b: true,
c: true,
d: false,
};
解决方法
我自己开始傻傻的写了个循环去判断,群里也顺便问了一下有没有更优雅的解法,还真有
我的写法
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)的解法
Object.values(test).every((item) => item === true);
大佬的解法是不是更优雅?
后记
后来期望加一个可以复位对象的值为 false 的方法
function resetFalse(params) {
let obj = {};
for (const key in params) {
if (Object.hasOwnProperty.call(params, key)) {
obj[key] = false;
}
}
return obj;
}
在群里问了一圈,被 diss 了,没错,被 diss 了。这都是简单的基操,,我就是想提升一下自己,学习更好的解法。