1

我有一个常规数组:

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

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

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

感谢您有一个愉快的一天 :)

4

2 回答 2

3

数组是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");
}
于 2013-05-25T23:53:38.493 回答
1

您正在寻找的实际区别是 Array 和 Object(您将其命名为关联数组)。但是 Array 只是 Object 的一种类型,所以真正的测试是它是否是 Array。

最好的检查是这样的:

function isArray(x){
    return typeof x === 'object' && {}.toString.call(x) === '[object Array]';
}

(事实上​​,这实际上与 jQuery 所做的相同)

那么为什么不直接检查构造函数x.constructor===Array呢?因为它可能是由另一个框架创建的,在这种情况下,构造函数将不一样,尽管对象是一个数组。

于 2013-05-25T23:56:48.550 回答