首页 > 其他分享 >js:判断对象或数组

js:判断对象或数组

时间:2024-03-07 20:58:36浏览次数:19  
标签:instanceof val 对象 Object js 数组 Array true

一、判断值是否是对象:

  1. toString 方法【常用】
    Object.prototype.toString.call(val)==='[object Object]' 
    // true 表示为对象
    // 这里使用 call 方法改变作用域

     

  2. constructor 方式
    val?.constructor===Object 
    // true 代表为对象

     

  3. typeof 与 instanceof 方式:typeof 和 instanceof 并不能完全判断一个值为对象
    1.   typeof 的取值:
      • undefined:值未定义
      • boolean:值为布尔值
      • string:值是字符串
      • number:值是数值
      • object:值是对象(包括数组)或null
      • function:值是函数
      • symbol:值是 Symbol
    2.   instanceof 对于数组和对象都返回 true,如果是 null 返回 false
      • [] instanceof Object:true
      • new Object instanceof Object:true
      • null instanceof Object:false
  4. __proto__方式 【不推荐】
    val.__proto__===Object.prototype 
    // true 代表为对象

     

  5. Object.getPrototypeOf 方式
    Object.getPrototypeof(val)===Object.prototype
    // true 代表为对象

     

二、判断值是否为数组:

  1. toString 方式
    Object.prototype.toString.call(val)==='[object Array]'
    // true 代表为数组

     

  2. Array.isArray方法【推荐】
    Array.isArray(val)
    // true 代表为数组

     

  3. instanceof 方式
    val instanceof Array
    // true 代表为数组

     

  4. constructor 方式
    val?.constructor===Array
    // true 代表为数组

     

  5. __proto__方式 【不推荐】
    val.__proto__===Array.prototype
    // true 代表为数组

     

  6. Object.getPrototypeOf 方式
    Object.getPrototypeof(val)===Array.prototype
    // true 代表为数组

     

  7. isPrototypeOf 方式
    Array.prototype.isPrototypeOf(val)
    // true 代表为数组

     

标签:instanceof,val,对象,Object,js,数组,Array,true
From: https://www.cnblogs.com/yhstsy/p/18059716

相关文章

  • P8686 [蓝桥杯 2019 省 A] 修改数组
    备赛蓝桥杯和icpc的习题:一道并查集的题目>#include<iostream>>#include<vector>>#include<algorithm>>#include<math.h>>#include<string>>#include<string.h>>#include<iomanip>>#include<map>&g......
  • java基础 韩顺平老师的 面向对象(基础) 自己记的部分笔记
    194,对象内存布局基本数据类型放在堆里面,字符串类型放在方法区。栈:一般存放基本数据类型(局部变量)堆:存放对象(Catcat,数组等)方法区:常量池(常量,比如字符串),类加载信息 196,属性注意细节1,属性可以是基本数据类型,也可以是引用类型(对象,数组)2,属性的定义语法同变量,示例:访问修饰符属......
  • Java面向对象之封装性
    封装性我要用洗衣机,只需按开关即可,无需了解洗衣机的内部结构。以上这句话可能大家在搜索学习封装性的时候可能都听过,可是这句话严重误导了我。可能是由于面向过程的学习太过深刻,我联想到了函数,函数不就是把洗衣服的过程全部“封装”起来了吗?我只需要调用函数方法就可以了呀,确......
  • JS数组去重的10种方法
    vararr=[1,1,'true','true',true,true,15,15,false,false,undefined,undefined,null,null,NaN,NaN,'NaN',0,0,'a','a',{},{}]利用Set(ES6中最常用)functionuseSet(arr){returnArray.from(newSet(arr))} 利用for......
  • Spring框架Bean对象的五个作用域
    ​ 一、前言:Bean对象简介在Spring项目中,那些由Spring IoC容器所管理的对象,称为bean。简单地讲,bean就是由Spring容器初始化、装配及管理的对象,除此之外,bean就与应用程序中的其他对象没有什么区别了。 而bean定义以及bean相互间的依赖关系将通过配置元数据来描述。上一段描述......
  • CUDA指针数组Kernel函数
    技术背景在前面的一篇文章中,我们介绍了在C++中使用指针数组的方式实现的一个不规则的二维数组。那么如果我们希望可以在CUDA中也能够使用到这种类似形式的不规则的数组,有没有办法可以直接实现呢?可能过程会稍微有一点麻烦,因为我们需要在Host和Device之间来回的转换,需要使用到很多C......
  • Python中Spark读取parquet文件并获取schema的JSON表示
     步骤:初始化SparkSession。使用spark.read.parquet()读取Parquet文件。调用df.schema.json()获取schema的JSON表示。frompyspark.sqlimportSparkSession#初始化SparkSessionspark=SparkSession.builder.appName("ReadParquetSchema").getOrCreate(......
  • day57 动态规划part14 代码随想录算法训练营 53. 最大子数组和
    题目:53.最大子数组和我的感悟:理解难点:递推公式想错了。听课笔记:我的错误的代码:通过截图:代码易错点:老师代码:扩展写法:资料:......
  • Scanner对象
    前言之前我们学的基本语法中我们并没有实现程序和人的交互,但是Java给我们提供了这样一个工具类,我们可以获取用户的输入。java.util.Scanner是Java5的新特征,我们可以通过scanner类来获取用户的输入基本语法代码Scannerstr=newScanner(System.in);通过Scan......
  • spring-JSON序列化
    1,使用场景。SpringBoot默认json为JackJson。在Controller需要返回Json数据时,我们使用了RestController,如果想对返回的数据进行一定的处理,也就是序列化对象为Json时使用。反序列化,就是当接收的参数想做一定处理,获取到处理后的数据时候。2,JsonSerializer序列化1,自定......