js中判断对象是否为数组的几种方式

JavaScript012

js中判断对象是否为数组的几种方式,第1张

分别是普通对象,数组对象和日期对象

用双下划线proto获取对象的原型对象再与数组的原型对象作比较,返回ture为数组,false则不是

翻译成人话就是数组的原型对象是obj1的原型对象么,会返回一个布尔值,

与以上两种方法相同,返回ture为数组,false则不是

对象会继承原型对象的constructor 属性,所以可以用此属性找到对象的构造函数

再根据构造函数来判断是否该对象为数组对象

所以new出来的obj2则为Array(数组对象)的一个实例

所以可以用instanceof 实例进行判断

因为前几种方式都存在一定的缺陷

比如

则在控制台查看obj1都会是ture

而第六种则不会,在每个对象创建时都会有一个隐藏的值类型,用对象名加点访问不到

Object对象和它的原型链上各自有一个toString()方法,第一个返回的是一个函数,第二个返回的是值类型。

所以任何对象可以使用call()去使用Object.toString的函数

只要跟输出结果相比较就可以得出布尔值

直接返回布尔值,不用加等号

如何把JS对象转成数组

1. 前言

首先,当JS对象是键值对的情况时(Json对象),因为数组时以数字为索引的,所以只能把JS对象中的Key或者Value组成数组使用。

2. 样例如下:

var obj={"one":"I am 1","two":"I am 2"}

var arr = Object.getOwnPropertyNames(obj) //arr=["one", "two"]

var arr2 = Object.keys(obj)//arr=["one", "two"]

var valArr = arr.map(function(i){return obj[i]})//["I am 1", "I am 2"]

var valArr2 = arr2.map(function(i){return obj[i]})//["I am 1", "I am 2"]

//或者2,4和3,5各自合并成一条语句

var valArr22 = Object.keys(obj).map(function(i){return obj[i]})//["I am 1", "I am 2"]