js-对象属性是否全部为空

文章介绍了在JavaScript中检测对象是否全为空值的七种方法,包括使用filter、every、some、JSON.stringify、lodash库以及for循环等,适用于前端开发中对查询条件的验证场景。
摘要由CSDN通过智能技术生成

下面方法的返回值为true

写法1-filter

!Object.values(data).filter(i=>i).length

if(!Object.values(this.postData).filter(i=>i).length) {
                MessageBox.warning('至少输入一个条件查询后方可下载');
                
}

写法2-every:


Object.values(data).every(i=>!i)

写法3-some:(效率高点)

!Object.values(data).some(i=>!!i)

写法4-JSON:

let a = {a: 0, b: '1', c: null}
let b = JSON.parse(JSON.stringify(a, (i, value) => { if(!!value) {return value} else {return} } ))
// b {b: 1}

let a = {a: 0, b: '', c: null}
let b = JSON.parse(JSON.stringify(a, (i, value) => { if(!!value) {return value} else {return} } ))
// b {}

// 根据以上的结果可以得出
JSON.stringify(a, (i, value) => { if(!!value) {return value} else {return} } ) === '{}'

写法5-lodash

import _ from 'lodash'
let a = {a: 0, b: '1', c: null}
let b = {a: 0, b: '', c: null}

const isObjectEmpty = _.flow([
  _.partialRight(_.omitBy, _.isEmpty),
  _.isEmpty
])
console.log(isObjectEmpty(a)) // false
console.log(isObjectEmpty(b)) // true

写法6-Object.keys与forEach

**我们在做前端开发的时候,会遇到有输入很多的查询条件,然后去后台查询数据,
有时候对查询条件没有任何限制,但有的时候遇到特殊的情况,需要查询的条件不能为空,至少要输入一个条件。

有什么方法可以快速判断获取到的对象里面是不是不全为空呢?只有两三个字段的时候,我们可以逐个获取判断一下,但是当条件多的时候这种方法就不行了

/**
* 判断对象的值是不是全为空
*/
objectValueAllEmpty:function(object){
	var isEmpty = true;
	Object.keys(object).forEach(function(x) {
	    if(object[x] != null && object[x] != ""){
		    isEmpty = false;
	    }
	});
	return isEmpty;
}

写法7-for in

function objectKeyIsEmpty(obj) {
  let empty = null;
  for (const key in obj) {
    if (obj.hasOwnProperty(key)) {
     if (obj[key] === null || obj[key] === ‘’) {
       empty = true;
     } else {
     empty = false;
    break;
    }
  }
}
  return empty;
}

调用:
var obj={name:"",age:12}
if(objectKeyIsEmpty(obj)){
alert(“empty”)}else{alert(“not empty”)}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

都挺好,刚刚好

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值