判断数组为空、含有某值,判断数据类型,判断空对象

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


一、js判断数组是否为空

  方法一:  arr.length

let arr = [];
if (arr.length == 0){
   console.log("数组为空")
}else {
   console.log("数组不为空")
}

方式二:arr == true不为空

let arr1 = [];
if(arr1 == true){
    console.log("arr1不为空");
}else{
    console.log("arr1为空");
}

//arr1为空

二、js判断数组是否含有某个值

  方法一:  arr.indexOf()

if (arr.indexOf(2) != -1){
   console.log("数组含有2")
}else {
   console.log("数组不含2")
}

  方法二:  for循环结合if判断

for (let i = 0;i < arr.length;i++){
   if (arr[i] === 2){
      console.log("数组含有2")
  }
}

  方法三: arr.find(callback)   

arr.find(value => {
   if (value === 2){
      console.log("数组含有2")
  }
})

   方法四: arr.includes() ES6新方法。

         数组中含有某值返回true,没有返回false。

let arr = [1,2,3,4];
if(arr.includes(2)){
  console.log("数组中有2");
}else{
  console.log("数组中无2");
}

 三、判断数据类型:toString 最完美的方法

        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 的引用

四、判断空对象

1. JSON.stringify()

通过判断空数组和空对象的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]

2. 判断数组的长度/对象key的长度

空数组 :Array.isArray()+length()

        使用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); //验证为数组且为空

空对象:Object.prototype.isPrototypeOf() + keys().length

        同样需要判断:1.是对象;2.为空

        对象没有length属性,但是可以通过keys()方法获得对象内key的数组,所以

const emptyObj = {};
console.log(Object.prototype.isPrototypeOf(emptyObj) && emptyObj.keys(obj).length === 0);//验证为对象且为空

你可能感兴趣的:(javascript,开发语言,ecmascript)