JS 中如何判断数组

JavaScript012

JS 中如何判断数组,第1张

JS 中有四种方式判断数据类型,它们分别是: typeof 、 instanceof 、 constructor 、 Object.prototype.toString 。

在 ES5 中,新增了几种方式可以用来进行数组的判断,它们是 Object.prototype.isPrototypeOf 、 Array.isArray 和 Object.getPrototypeOf 。

很遗憾,对于任何引用类型的数据(包括 null ), typeof 统一返回 Object 字符串,所以不能用它来判断 JS 中的数组。

于是可以通过 instanceof 检测数据的原型链中是否存在 Array 构造函数来判断数据是否是数组。

对象实例有一个 constructor 属性, constructor 指向对象实例的构造函数。于是,我们可以通过判断数据的 constructor 是否为 Array 构造函数即可。

要注意: constructor 是可以被修改的,所以这种判断方式不可靠。

toString 可以用于检测对象的类型,它返回一个字符串。为了每个对象都能通过 Object.prototype.toString 来判断,需要借助函数的 call 或者 apply 方法。

这个方法没什么好说的,直接调用即可,会返回一个布尔值。

根据 ES5 新增的这个方法,我们可以把数组的原型对象与需要判断对象的原型进行比较,如果两者是全等关系,那么可以认为它是数组。

借用 ES5 新增的 isPrototypeOf 方法,可以直接了当的通过 Array 调用来判断目标数据是否是数组类型。

ES5 新增的两种方法都与原型链有关,理解并掌握原型相关内容还是判断数组的关键。方便理解与记忆的话,可以把 isArray 和 isPrototypeOf 放在一起,他们返回的都是布尔值,并且用途也相似。

getPrototypeOf 方法则是用来找到被检测数据的原型,拿到原型后还要与 Array.prototype 进行比较。

1、js判断变量是否为数字的办法,主要是js里面的isNaN函数的用法,示例代码:

1. document.write(isNaN(123))//false

2. document.write(isNaN(-1.23))//false

3. document.write(isNaN(5-2))//false

4. document.write(isNaN(0))//false

5. document.write(isNaN("Hello"))//true

6. document.write(isNaN("2005/12/12"))//true

7. document.write(isNaN("6/2"))//true

8. document.write(isNaN("3"))//false

2、定义和用法:isNaN() 函数用于检查其参数是否是非数字值。

3、语法:isNaN(x) x 必需。要检测的值。

4、返回值:如果 x 是特殊的非数字值 NaN(或者能被转换为这样的值),返回的值就是 true。如果 x 是其他值,则返回 false。

5、说明:isNaN() 函数可用于判断其参数是否是 NaN,该值表示一个非法的数字(比如被 0 除后得到的结果)。

6、如果把 NaN 与任何值(包括其自身)相比得到的结果均是 false,所以要判断某个值是否是 NaN,不能使用 == 或 === 运算符。正因为如此,isNaN() 函数是必需的。

1.arr.indexOf(搜索元素,开始位置):

元素在数组中的位置,如果没搜索到则返回 -1

2.arr.includes(搜索元素):

如果是返回 true,否则false

3.filter() 方法:返回符合条件的元素组成的数组

4.array.find():返回找出第一个符合条件的数组元素

5.array.findIndex():返回第一个符合条件的数组元素的位置,

如果所有元素都不符合条件,则返回-1

6.传统for()循环

7.for...of

8.forEach

9.some():用于检测数组中的元素是否满足指定条件(函数提供)

如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。

如果没有满足条件的元素,则返回false。

10.every:用于检测数组中的元素是否满足指定条件(函数提供)

如果都满足条件,则表达式返回true ,

如果有一个不满足,则返回false。