• 【JavaScript】js判断一个变量是数组


    js判断一个变量是数组

    1、利用 Array.isArray()

    Array.isArray() 用于确定传递的值是否是一个 Array

    ​ 例如:

    Array.isArray([1, 2, 3]);  // true
    Array.isArray({foo: 123}); // false
    Array.isArray('foobar');   // false
    Array.isArray(undefined);  // false
    
    • 1
    • 2
    • 3
    • 4

    语法:

    Array.isArray(value)
    
    • 1

    参数

    value :是需要监测的值

    返回值

    如果值是 Array,则为 true;否则为 false

    如果对象是 Array,则返回 true,否则为 false。

    示例

    let a = [1,3,4,5,6,7];
    console.log(Array.isArray(a)) //true
    
    • 1
    • 2

    2、instanceof

    instanceof 运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上。

    语法

    object instanceof constructor
    
    • 1

    参数

    object //某个实例对象
    
    • 1
    constructor //某个构造函数
    
    • 1

    instanceof 运算符用来检测 constructor.prototype 是否存在于参数 object 的原型链上。

    let b = [1,4,5]
    console.log(b instanceof Array) //true
    
    • 1
    • 2

    3、利用constructor

    constructor 属性返回 Object 的构造函数(用于创建实例对象)。注意,此属性的值是对函数本身的引用,而不是一个包含函数名称的字符串。

    描述

    所有对象(使用 Object.create(null) 创建的对象除外)都将具有 constructor 属性。在没有显式使用构造函数的情况下,创建的对象(例如对象和数组文本)将具有 constructor 属性,这个属性指向该对象的基本对象构造函数类型。

    示例1

    let o = {}
    console.log(o.constructor === Object)  // true
    
    let m = new Object
    console.log(m.constructor === Object) // true
    
    let p = []
    console.log(p.constructor === Array) // true
    
    let e = new Array
    console.log(e.constructor === Array) // true
    
    let n = new Number(3)
    console.log(n.constructor === Number) // true
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    示例2

    let str = 3
    const arr = new Array(str)
    console.log('arr.constructor is ' + arr.constructor) 
    //输出结果: arr.constructor is function Array() { [native code] }
    console.log(arr.constructor === Array) 
    //输出结果: true
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    所以

    let a = [2,3,4,5]
    
    • 1

    1. 第一种

    function isArray(arr) {
        return arr.constructor === Array;
    } 
    console.log(isArray(a)) //true
    
    • 1
    • 2
    • 3
    • 4

    2. 第二种

    function isArray(arr) {
        return arr.constructor.toString().indexOf("Array") > -1;
    }
    console.log(isArray(a)) //true
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    arr.constructor 返回的值为function: function Array() { [native code] }
    to.String() 方法返回一个表示该对象的字符串。通过该方法得到 string类型的 function Array() { [native code] }
    indexOf(‘Array’) 检查上述string类型的值中是否含有 Array ==》大于-1 说明有找到
    整个函数返回的结果是 true

    indexOf() 方法返回调用它的 String 对象中第一次出现的指定值的索引,从 fromIndex 处进行搜索。如果未找到该值,则返回 -1
    语法: str.indexOf(searchValue [, fromIndex])
    返回值:查找的字符串 searchValue 的第一次出现的索引,如果没有找到,则返回 -1。

    检测是否存在某字符串

    注意 0 并不会被当成 true ,-1 不会被当成 false 。所以当检测某个字符串是否存在于另一个字符串中时,可使用下面的方法:

    ‘Blue Whale’.indexOf(‘Blue’) !== -1 // true
    ‘Blue Whale’.indexOf(‘Bloe’) !== -1 // false

  • 相关阅读:
    高分三号1米分辨率飞机检测识别数据集
    盘点6个主流的数据分析工具,及优缺点对比
    第四十二章 持久对象和SQL - 用于创建持久类和表的选项
    [车联网安全自学篇] ATTACK安全之Frida反调试检测
    LeetCode【69. x 的平方根】
    Win11鼠标动不了 键盘怎么代替鼠标操作
    Nginx 反向代理和负载均衡
    Redis的java客户端-RedisTemplate光速入门
    记GitLab服务器迁移后SSH访问无法生效的问题解决过程
    BUG:AttributeError: ‘GLMChineseTokenizer‘ object has no attribute ‘sp_model’
  • 原文地址:https://blog.csdn.net/Sonnenlicht77/article/details/126810141