一、判断JS对象为空的方法
- ES5
Object.keys(obj).length === 0 && obj.constructor === Object
- ES7+
Object.entries(obj).length === 0 && obj.constructor === Object
- ES5语法之前的实现方式
function isEmpty(obj) {
for(var prop in obj) {
if(obj.hasOwnProperty(prop))
return false;
}
return JSON.stringify(obj) === JSON.stringify({});
}
// 类型判断功能函数
function typeOf(value) {
if (value !== value) {
return 'NaN';
}
return Object.prototype.toString.call(value).slice(8, -1).toLowerCase();
}
// 验证是否是{}、""、[]
function isEmpty(obj) {
if (typeOf(obj) === 'string') {
if (obj.trim() === '')
return true;
return false;
}
if (typeOf(obj) === 'array') {
if (obj.length === 0)
return true;
return false;
}
if (typeOf(obj) === 'object') {
for(var prop in obj) {
if(obj.hasOwnProperty(prop))
return false;
}
return JSON.stringify(obj) === JSON.stringify({});
}
return false;
}
// 递归删除
function deleteEmptyKeys(obj) {
if (typeOf(obj) === 'object') {
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
if (isEmpty(obj[key])) {
delete obj[key];
} else if (typeOf(obj[key]) === 'object') {
deleteEmptyKeys(obj[key]);
}
}
}
}
}
网友评论