判断对象里的属性是否都为空(适用字符串、数组结构对象)

好久没写博客记录了
场景:表单填写时,填写完对应栏目需要有填完的标识
下面是自己写的一坨代码

export function objecAtrtIsEmpty(data) {
  // 如果是数组,遍历数组里面的
  if (Array.isArray(data)) {
    if (data.length == 0) return false;
    return data.every(el => {
      return objecAtrtIsEmpty(el);
    });
    // 非空数组
  } else if (Object.prototype.toString.call(data) === "[object Object]" && JSON.stringify(data) !== '{}') {

    //对象or对象数组
    return Object.keys(data).every(key => {
      // 如果对象子元素为数组
      if (Array.isArray(data[key])) {
        if (data[key].length == 0) return false;
        return data[key].every(el => {
          return objecAtrtIsEmpty(el);
        });
      } else if (Object.prototype.toString.call(data) === "[object Object]") {
      	 // 如果0表示不为空的话可以直接用!data
        // 直接用!data,非运算符的话有些值为0的话会被过滤掉
        return data[key] != "" && data[key] != null && data[key] != undefined;
      } else {
        return key != "" && key != null && key != undefined;
      }
    });
  } else if (Object.prototype.toString.call(data) === "[object Object]" && JSON.stringify(data) === '{}') {
    return false;
  } else {
    // 处理单个值
    return data != "" && data != null && data != undefined;
  }
}

在这里插入图片描述

感觉好绕,来个大佬提供更优的方案 赐教


版权声明:本文为simper_boy原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。