问题
只要有一个对象的值为非 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 了。这都是简单的基操,,我就是想提升一下自己,学习更好的解法。