我有一个常规数组:
var My_Reg_Array = new Array('some string', 'some other string', 'and another');
一个关联数组:
var My_Associative_Reg_Array = {
'some_key' :'Some string value',
'some_key2' :'Some string value2',
'some_key3' :'Some string value3'
}
如何使用JavaScript测试它们以确定哪一个是关联的,哪一个是常规的?
如果两者都是对象......那么对象的'类型'是我们正在寻找的测试吗?
这两种对象类型之间有区别吗?
谢谢......祝你有愉快的一天:)
答案 0 :(得分:4)
数组是javascript中的对象,因此您需要先检查数组。
if(variable_to_check instanceof Array){
console.log("I'm an array");
}else if(variable_to_check instanceof Object){
console.log("I'm just an associative array, but really an Object");
}
答案 1 :(得分:2)
您正在寻找的实际区别是数组和对象(您命名为关联数组)。但是Array只是一种Object,所以测试的确是它是否是一个数组。
最好的检查是:
function isArray(x){
return typeof x === 'object' && {}.toString.call(x) === '[object Array]';
}
(事实上,这几乎与jQuery的相同)
那么为什么不检查像x.constructor===Array
这样的构造函数呢?因为它可能是由另一个帧创建的,在这种情况下构造函数将不相同,尽管该对象是一个数组。