前言
不知道你是否想过如何判断一个变量的值是否是[{},...]或者{},本文分享三种方法。
- 网友给的方法
- 百度搜索到的方法
- 自己写的方法
网友给的方法
代码如下:
function isJSON(str) {
try {
JSON.parse(str)
return true
} catch {
return false
}
}
这种方法是有问题的,当传入的参数是[{},...]或者{}返回的是false,不太符合期望。
百度到的方法
代码如下:
function isJSON(obj) {
return typeof (obj) == 'object' &&
Object.prototype.toString.call(obj).toLowerCase() == '[object object]'
&& !obj.length
}
这份代码的问题在于当传入参数是{length:1}的时候,返回的是fasle,一样不符合期望。
自己写的方法
代码如下:
/**
* @function 判断obj是否是[{},...]或者{}
* @param obj {any}
* @returns {boolean}
*/
function isJSON(obj) {
if (typeof obj === 'object') {
const lowercase = Object.prototype.toString.call(obj).toLowerCase()
if (lowercase === '[object array]') {
for (let i = 0; i < obj.length; i++) {
let flag = isJSON(obj[i])
if (!flag) {
return false
}
}
return true
} else if (lowercase === '[object object]') {
return true
} else {
return false
}
} else {
return false
}
}
//方法的调用
console.log(isJSON({}))//true
console.log(isJSON([{}]))//true
console.log(isJSON([{},'']))//false
这个方法可以判断一个变量的值是否是[{},...]或者{}
可能有人觉得我这个内容没有意义,但是我觉得只有想清楚问题,给出符合期望的解决方案,本身就是意义。
谢谢阅读!