下面方法的返回值为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”)}