如何辨别关联数组和常规数组之间的区别

时间:2013-05-25 23:42:39

标签: javascript arrays

我有一个常规数组:

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测试它们以确定哪一个是关联的,哪一个是常规的?

  • 如果两者都是对象......那么对象的'类型'是我们正在寻找的测试吗?

  • 这两种对象类型之间有区别吗?

谢谢......祝你有愉快的一天:)

2 个答案:

答案 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这样的构造函数呢?因为它可能是由另一个帧创建的,在这种情况下构造函数将不相同,尽管该对象是一个数组。