javascript数组可以是数字的还是关联的?

时间:2012-07-30 22:37:45

标签: javascript

  

可能重复:
  javascript array associative AND indexed?

我从函数返回一个数组,我想知道我是否也可以同时拥有字符串关联和数字关联。

前:

array[0] = green;
array[1] = blue;
array['what'] = colors;

2 个答案:

答案 0 :(得分:0)

在某种程度上是的,因为它是某种类型的对象。但这是错误的使用:) 将对象({})用于数字索引的命名(字符串)索引和数组([])。

答案 1 :(得分:0)

数组只是具有特殊长度属性的对象和一些方便的inhertited方法。由于数组是对象,因此它们的属性名称是字符串,但是数字方法('0','1','2'等)是由数组方法访问的,而非数字方法(例如长度)则不是。此外,许多数组方法都是通用的,可以应用于具有适当属性的任何对象(即数字长度属性和一些数字属性名称)。

请注意,要将其视为索引,属性名称必须满足rules for index names所以:

var x = [];
x['00'] = '00';  // length = zero as '00' is not an index
x['0']  = '0';   // length = 1 as '0' is an index

使用普通对象可以执行的数组通常被认为是不好的形式,但除了弄乱 length 属性之外没有其他后果。