1. 判断一个变量是对象还是数组
首先判断一个变量是对象还是数组,不能使用typeof
来判断,因为不管是对象还是数组,使用typeof
得到的都是"object"
。
可以使用Object.prototype.toString.call()
方法。
function isObjOrArr(obj) {
if (Object.prototype.toString.call(obj) === '[object Array]') {
console.log('obj是数组');
// other code
} else if (Object.prototype.toString.call(obj) === '[object Object]') {
console.log('obj是对象');
// other code
} else {
console.log('obj不是数组也不是对象');
// other code
}
}
2. 判断一个对象是否是空对象
2.1 可以通过 JSON.stringify()
方法判断
将对象转化为json字符串,再判断该字符串是否为"{}"即可。
function isEmpty(obj) {
if (JSON.stringify(obj) === '{}') {
console.log('对象为空!');
} else {
console.log('对象不为空!');
}
}
2.2 使用ES6的方法Object.keys()
方法结合length
属性进行判断
Object.keys(obj)
返回一个数组,包括对象自身的(不含继承的)所有可枚举属性(不含 Symbol 属性)的键名。
function isEmpty(obj) {
if (Object.keys(obj).length === 0) {
console.log('对象为空!');
} else {
console.log('对象不为空!');
}
}
3. 判断数组是否为空
可以通过length
属性直接返回数组中的元素个数,若为零,则表示数组为空。