js中判断空数组和空对象的方法_js 空数组_EntheosLee的博客-CSDN博客
JavaScript判断数组是否为空、 判断数据类型_javascript判断数组为空_webhyx的博客-CSDN博客
如何判断js数组是否为空_js判断数组为空_CodeChanningAz的博客-CSDN博客
目录
一、js判断数组是否为空
方法一: arr.length
方式二:arr == true不为空
二、js判断数组是否含有某个值
方法一: arr.indexOf()
方法二: for循环结合if判断
方法三: arr.find(callback)
方法四: arr.includes() ES6新方法。
三、判断数据类型:toString 最完美的方法
四、判断空对象
1. JSON.stringify()
2. 判断数组的长度/对象key的长度
空数组 :Array.isArray()+length()
空对象:Object.prototype.isPrototypeOf() + keys().length
let arr = [];
if (arr.length == 0){
console.log("数组为空")
}else {
console.log("数组不为空")
}
let arr1 = [];
if(arr1 == true){
console.log("arr1不为空");
}else{
console.log("arr1为空");
}
//arr1为空
if (arr.indexOf(2) != -1){
console.log("数组含有2")
}else {
console.log("数组不含2")
}
for (let i = 0;i < arr.length;i++){
if (arr[i] === 2){
console.log("数组含有2")
}
}
arr.find(value => {
if (value === 2){
console.log("数组含有2")
}
})
数组中含有某值返回true,没有返回false。
let arr = [1,2,3,4];
if(arr.includes(2)){
console.log("数组中有2");
}else{
console.log("数组中无2");
}
toString() 是 Object 的原型方法,调用该方法,默认返回当前对象的 [[Class]] 。这是一个内部属性,其格式为 [object Xxx] ,其中 Xxx 就是对象的类型。
对于 Object 对象,直接调用 toString() 就能返回 [object Object] 。而对于其他对象,则需要通过 call / apply 来调用才能返回正确的类型信息。
Object.prototype.toString.call(’’) ; // [object String]
Object.prototype.toString.call(1) ; // [object Number]
Object.prototype.toString.call(true) ; // [object Boolean]
Object.prototype.toString.call(Symbol()); //[object Symbol]
Object.prototype.toString.call(undefined) ; // [object Undefined]
Object.prototype.toString.call(null) ; // [object Null]
Object.prototype.toString.call(new Function()) ; // [object Function]
Object.prototype.toString.call(new Date()) ; // [object Date]
Object.prototype.toString.call([]) ; // [object Array]
Object.prototype.toString.call(new RegExp()) ; // [object RegExp]
Object.prototype.toString.call(new Error()) ; // [object Error]
Object.prototype.toString.call(document) ; // [object HTMLDocument]
Object.prototype.toString.call(window) ; //[object global] window 是全局对象 global 的引用
通过判断空数组和空对象的json.stringify返回值与"[]“、”{}"是否相等判断。
const emptyArr = [];
const emptyObj = {};
console.log(JSON.stringify(emptyArr) === "[]"); //true
console.log(JSON.stringify(emptyObj) === "{}"); //true
注:toString()和String方法对空数组和空对象的转换结果和JSON.stringify不一样:
(toString和String方法的结果一致)
console.log(emptyArr.toString()); // [object object]
console.log(emptyObj.toString()); // [object object]
使用isPrototypeOf()方法和数组的length()方法判断一个值 :1.是数组;2.为空。
isPrototype()的用法:objA.isPrototypeOf(objB) ,
即判断对象A(objA)是否为对象B(objB)的原型链上的原型对象,如:若要判断一个变量a是否为数组,可以使用
Array.prototype.isPrototypeOf(a)来判断,值为true\false(也可以用Array.isArray()判断是否为数组)
接下来可以进行空数组验证:
const emptyArr = [];
console.log(Array.isArray(emptyArr) && emptyArr.length === 0); //验证为数组且为空
同样需要判断:1.是对象;2.为空
对象没有length属性,但是可以通过keys()方法获得对象内key的数组,所以
const emptyObj = {};
console.log(Object.prototype.isPrototypeOf(emptyObj) && emptyObj.keys(obj).length === 0);//验证为对象且为空