javascript数组既可以是数字数组,也可以是关联数组

Can a javascript array be both numerical and associative?

本文关键字:数组 也可以 关联 数字 javascript 既可以      更新时间:2024-05-05

可能重复:
javascript数组关联AND索引?

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

例如:

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

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

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

请注意,要被视为索引,属性名称必须满足索引名称的规则,因此:

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

在普通对象可以使用的地方使用数组通常被认为是一种糟糕的形式,尽管这样做不会产生任何后果,除非您弄乱了length属性。

相关文章: