Skip to content

优雅的 JavaScript 对象值判断和重置

Published: at 10:18 AMSuggest Changes

问题

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


Previous Post
JS Tree 树状数据 Object Array 互转
Next Post
CSS position: absolute 属性问题详解