众所周知,在开始的开始,那肯定要罗嗦两句.工作之后你就会发现后端返回的数据,其实不是完全符合前端需求的.这个时候呢,我们就需要把一些数据做处理.
今天带来五种判断空对象的方法.
1:
好的,首先向我们走来的是JSON.stringify(data) === '{}'它可以通过将对象转为字符串来判断是否为空.为空,则为true,否则就是false
let data = {};
let data1 = {
name: "大帅哥",
age: "18"
}
console.log(JSON.stringify(data) === '{}') // true
console.log(JSON.stringify(data1) === '{}') // false
2:
接下来出场的是我们的二号选手Object.keys(data).length.它是通过判断对象自身有没有key 值来判断是否为空的
let data = {};
let data1 = {
name: "大帅哥",
age: "18"
}
console.log(Object.keys(data).length)// 0
console.log(Object.keys(data).length===='{}')// true
console.log(Object.keys(data1).length===='{}')// false
3:
紧随在二号后面的是我们的三号,哦!天哪,它和二号如此的相似.难道他们是兄弟嘛??不可思议!他们真的是兄弟.看看我们的三号兄弟,哦天哪,它是通过判断对象是否有value值来判断是否为空对象的.Object.values(data).length!让我们为这对兄弟送上掌声.
let data = {};
let data1 = {
name: "大帅哥",
age: "18"
}
console.log(Object.value(data).length)// 0
console.log(Object.value(data).length===='{}')// true
console.log(Object.value(data1).length===='{}')// false
4:
好的,让我们看向第四位参赛者.天哪,它是for..in.众所周知,这位很忙,它的工作很多.那让我们看看这位大佬,能不能带给我们惊喜.
let data = {};
let data1 = {
name: "大帅哥",
age: "18"
}
let _fn = (obj) => {
for (let key in obj) {
return false;
}
return true
}
console.log(_fn(data)) //true
console.log(_fn(data1)) //false
5:
五号参赛者,他是谁呢??,{}.hasOwnProperty.call(obj,key),他会给我们带来什么样的惊喜呢?
let data = {};
let data1 = {
name: "大帅哥",
age: "18"
}
let _fn = (obj) => {
for (let _key in obj) {
if (obj.hasOwnProperty(_key)) {
return false
}
}
return true
}
console.log(_fn(data)) //true
console.log(_fn(data1)) //false
不得不说,五号和二号还又四号有点像啊
6:
那么接下来就是我们的六号选手,他是谁呢??它是Object.getOwnPropertyNames(),它和Object.keys(obj)的功能是一样的,我们一般也是用来获取一个JSON对象中所有属性名
let data = {};
let data1 = {
name: "大帅哥",
age: "18"
}
let _n = Object.getOwnPropertyNames(data)
let _f = Object.getOwnPropertyNames(data1)
console.log(_n) // []
console.log(Object.getOwnPropertyNames(data).length)//0
console.log(_f) // ["name"]