前言
当前端需要判断一个对象是否为空时,有多种方法可以实现。
下面列出了六种常见的方法,并提供了相应的例子和解释:
1.使用object.keys()方法:
主要是获取对象的键名,将对象的属性转换成数组,通过是否存在键名(数组的长度是否为0)而判断是否为空
function isemptyobject(obj) { return object.keys(obj).length === 0; } const obj1 = {}; console.log(isemptyobject(obj1)); // true const obj2 = { name: 'juny long', age: 18}; console.log(isemptyobject(obj2)); // false
2.使用for…in循环:
使用for…in循环遍历对象属性,并使用obj.hasownproperty()检查属性是否属于对象本身,如果存在任何属性,则返回false,否则返回true。
function isemptyobject(obj) { for (let key in obj) { if (obj.hasownproperty(key)) return false; } return true; } const obj1 = {}; console.log(isemptyobject(obj1)); // true const obj2 = { name: 'juny long', age: 18}; console.log(isemptyobject(obj2)); // false
3.使用json.stringify()方法:
json.stringify()
是将一个javascript对象或值转换为json格式字符串,如果最终只得到一个{},就说明他是一个空对象
function isemptyobject(obj) { return json.stringify(obj) === '{}'; } const obj1 = {}; console.log(isemptyobject(obj1)); // true const obj2 = { name: 'juny long', age: 18 }; console.log(isemptyobject(obj2)); // false
json.parse 和 json.stringify
在es5中,增加了一个json对象,专门用来处理json格式的数据。
json是一个对象,但只有两个方法:parse
和stringify
,不能作为构造函数,也无属性1.json.stringify() 语法为:
(返回指定数据的json格式字符串)
json.stringify(value[, replacer [, space]])
- value:将要序列化成 一个json字符串的javascript对象或值。
- replacer 可选,用于处理将要序列化的值。
- space 可选,指定缩进用的空白字符串,用于美化输出。
2.json.parse() 语法为:
(用来解析json字符串得到对应的javascript值或对象)
json.parse(text[, reviver])
- text:要被解析成的字符串。
如果传入数字则会转换成十进制数字输出。
如果传入布尔值则直接输出。
如果传入null则输出null。
不支持其他类型的值,否则报错。- reviver: 可选,转换器, 可以用来修改解析生成的原始值。
- 返回值: javascript对象/值, 对应给定json文本的对象/值。
在解析json字符串的时候,需要注意到json格式的一些规范,不然就容易报错。
4.es6的object.getownpropertynames()方法:
这种方法通过object.getownpropertynames()方法获取对象的所有属性,然后判断属性数组的长度是否为0来确定对象是否为空。
和上面讲到的object.keys()相似哦,下面将会简单讲到其区别
function isemptyobject(obj) { return object.getownpropertynames(obj).length === 0; } const obj1 = {}; console.log(isemptyobject(obj1)); // true const obj2 = { name: 'juny long', age: 18 }; console.log(isemptyobject(obj2)); // false
object.getownpropertynames()与object.keys()的区别:
相同点:
功能是一样的,一般是用来获取一个json对象中所有属性
差异点:
object.getownpropertynames:
返回的是对象所有自己的属性,
object.keys(obj):
返回的是所有可枚举属性,也就是属性下的enumerable: false
5.第三方库
5.1使用lodash库的isempty()方法:
检查 value
是否为一个空对象,集合,映射或者set。 判断的依据是除非是有枚举属性的对象,length 大于 0 的 arguments object, array, string 或类jquery选择器。
对象如果被认为为空,那么他们没有自己的可枚举属性的对象。
这种方法使用lodash库中的isempty()方法,直接判断对象是否为空。
返回值:
(boolean): 如果 value
为空,那么返回 true
,否则返回 false
。
const _ = require('lodash'); const obj1 = {}; console.log(_.isempty(obj1)); // true const obj2 = { name: 'juny long', age: 18 }; console.log(_.isempty(obj2)); // false
5.2.使用underscore库的isempty()方法:
这种方法使用underscore库中的isempty()方法,直接判断,和lodash库的擦不多。
const _ = require('underscore'); const obj1 = {}; console.log(_.isempty(obj1)); // true const obj2 = { name: 'juny long', age: 18 }; console.log(_.isempty(obj2)); // false
总结
到此这篇关于前端判断对象为空的6种方法的文章就介绍到这了,更多相关前端判断对象为空内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论