问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

Javascript中判断变量是数组还是对象(array还是object)

发布网友 发布时间:2022-04-23 01:26

我来回答

1个回答

热心网友 时间:2022-04-07 08:14

怎样判断一个JavaScript变量是array还是obiect?
答案:
1、如果你只是用typeof来检查该变量,不论是array还是object,都将返回‘objec'。
此问题的一个可行的答案是是检查该变量是不是object,并且检查该变量是否有数字长度(当为空array时长度也可能为0)。
然而,参数对象【arguments
object】(传给制定函数的所有参数),也可能会适用于上述方法,技术上来说,参数对象并不是一个array。
此外,当一个对象有a.length属性的时候,这个方法也不成立。
复制代码
代码如下:
//
Real
array
正在的数组
var
my_array
=
[];
//
Imposter!
冒名顶替的!
var
my_object
=
{};
my_object.length
=
0;
//
Potentially
faulty
潜在的错误
function
is_this_an_array(param)
{
if
(typeof
param
===
'object'
&&
!isNaN(param.length))
{
console.log('Congrats,
you
have
an
array!');
}
else
{
console.log('Bummer,
not
an
array');
}
}
//
Works
成功
is_this_an_array(my_array);
//
Works,
but
is
incorrect
成功了,但是不正确
is_this_an_array(my_object);
2、回答这个问题的另一个答案是用一个更加隐蔽的方法,调用toString(
)方法试着将该变量转化为代表其类型的string。
该方法对于真正的array可行;参数对象转化为string时返回[object
Arguments]会转化失败;此外,
对于含有数字长度属性的object类也会转化失败。
复制代码
代码如下:
//
Real
array
真正的数组
var
my_array
=
[];
//
Imposter!
冒名顶替的!
var
my_object
=
{};
my_object.length
=
0;
//
Rock
solid
坚如磐石(检验函数)
function
is_this_an_array(param)
{
if
(Object.prototype.toString.call(param)
===
'[object
Array]')
{
console.log('Congrats,
you
have
an
array!');
}
else
{
console.log('Bummer,
not
an
array');
}
}
//
Works
成功了
is_this_an_array(my_array);
//
Not
an
array,
yay!
不是数组(array)!
is_this_an_array(my_object);
3、此外,在可能不可靠的多框架DOM环境中,instanceof是个完美合适的操作。
扩展阅读:"Instanceof
Considered
Harmful…"
http://perfectionkills.com/instanceof-considered-harmful-or-how-to-write-a-robust-isarray
复制代码
代码如下:
var
my_array
=
[];
if
(my_array
instanceof
Array)
{
console.log('Congrats,
you
have
an
array!');
}
4、对于Javascript
1.8.5(ECMAScript
5),变量名字.isArray(
)可以实现这个目的
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/isArray
复制代码
代码如下:
var
my_array
=
[];
if
(Array.isArray(my_array))
{
console.log('Congrats,
you
have
an
array!');
}
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
男生一般在15岁青春期心情不好大多是什么造成的 我今年15岁男生为什么会经常做那些难以启齿的梦? 男生的青春期是几之几岁?我今天十四岁半,是青春期吗? 怎么看别人加密的qq空间相册内容单独删除相册里的人聊天记录方法 win11怎么退出微软账户-windows11微软账户退出教程 windows11微软账户怎么退出 windows11退出微软账户教程 windows11怎么退出账号登录 windows11退出账号登录教程 高尔夫雾灯怎么打开? 新车上牌照流程 新车自己怎么上牌照 新车上牌的流程有哪些 javascript 对象和数组的使用? JavaScript中数组和对象之间的关系是什么? JS中数组与对象 javascript数组与对象区别和联系 求JavaScript 查找对象数组元素的高效率的方法 javascript怎么创建对象数组?? JavaScript 里的类数组对象 在做红烧排骨的过程中,需要注意哪些方面的问题? 红烧排骨如何烧法 红烧排骨怎么炖好吃还烂肉嫩 排骨红烧什么好吃 有谁知道红烧排骨煲怎样做? 为什么“剁手党”多是女生 红烧排骨怎么炖容易烂 双十一成交额破新高,你最后悔的一次剁手经历是什么? 「双十一」也焦虑?如何拯救“剁手党”? 你心中东北人最爱的下酒菜前五名是什么? 那些看了红花会贝贝直播“剁手”的观众现在留下了多大的心理阴影? 谁知道哪的干豆腐好吃啊?出名的? 想了解下各位双十一的时候剁手剁的怎么样?有没有后悔的 javascript 怎么将对象当数组,并以方法名作为下标来调用方法 在JavaScript中建立数组对象时的三个格式最正规的应该怎么写?_百度... JavaScript对象数组如何按指定属性和排序方 javascript怎么输出对象中的数组 Javascript如何判断一个变量是普通变量还是数组还是对象? js对象数组的问题 js对象数组 根据某个共同字段 分组 如何挑选新鲜鸡蛋? 鸡蛋如何挑选 鸡蛋如何保存能保鲜 怎么挑选好的鸡蛋? 如何正确挑选鸡蛋? 如何吃鸡蛋是最科学的呢? 如何快速地把鸡蛋打散? 怎样吃鸡蛋好? 苹果7升级13体验如何?有什么区别? 什么样的鼻子最标准? 什么样的鼻子才算完美呢? 好看鼻子的标准是什么?求告知 鼻子的美学标准是什么?
  • 焦点

最新推荐

猜你喜欢

热门推荐