Javascript 创建具有整数键的关联数组

Javascript 创建具有整数键的关联数组,javascript,arrays,associative-array,Javascript,Arrays,Associative Array,我需要在javascript中创建一个带有integer键的关联数组,如下所示 a["10"] = "ten"; 但当我创建一个数组时,它将值放入数组的10th索引,并创建一个长度为11的数组。我希望它是一个键值对。我知道这可以通过使用对象来实现,但我只需要一个数组。JavaScript没有关联数组。在JavaScript中执行此操作的唯一方法是使用对象: var a = { '10': 'ten' }; ECMAScript有1个对象(扩展为数组)就是一个例子 但是,: 数组对象对

我需要在javascript中创建一个带有
integer
键的关联数组,如下所示

a["10"] = "ten";

但当我创建一个数组时,它将值放入数组的
10th
索引,并创建一个长度为11的数组。我希望它是一个键值对。我知道这可以通过使用对象来实现,但我只需要一个数组。

JavaScript没有关联数组。在JavaScript中执行此操作的唯一方法是使用对象:

var a = {
    '10': 'ten'
};
ECMAScript有1个对象(扩展为数组)就是一个例子

但是,

数组对象对某类属性名给予特殊处理。属性名
P
(以字符串值的形式)是数组索引,当且仅当
ToString(ToUint32(P))
等于
P

。。具体来说,每当添加名称为数组索引的属性时,如果需要,length属性将更改为比该数组索引的数值多一个

因此,给定
arr=[]
,表达式
arr[“1”]
arr[1]
引用相同的属性名称。由于
P
(属性名称)是“1”,并且
length
从上面看是0,因此对该属性的赋值将
arr.length
设置为
ToUint32(P)+1
,或2

无法更改此行为。如果您不希望有特殊的
长度
属性,请使用“普通”对象而不是数组。但是,许多
Array.prototype
函数可以用于具有
length
属性的任意对象(除了一些实现问题),并且可以创建一个对象,使其使用
Array.prototype
作为自己的原型

尽管如此,《华盛顿邮报》并没有说真正的问题是什么。而不是假设它必须以特定的方式完成,考虑解释意图是什么:例如为什么一个[ 10 ]?如果对象将在列表中使用,那么如果有“11项”,又有什么错呢



1在讨论这一陈述之前,请阅读文章:名称中的术语“数组”并不意味着有序序列,也不排除长度的附加概念或散列的使用等。如果您使用不同的定义,确保为给定的操作指定它是什么以及所需的行为是什么。

数组不应该这样做,那么为什么需要数组呢?也许对象具有您想要的功能,但您只是不知道。我在SAPUI5中的一个项目中使用javascript,我需要在下拉列表中填充数组,而下拉列表不支持对象。我只需要阵列..:(Javascript数组是对象。“索引”只是数字属性名称,长度属性定义为最高的索引加上一,它不是索引计数。-1 Javascript确实有(又名Map又名Dictionary);尽管形式有限(即对象)虽然这个术语感觉相当过时,但它是有效的,在一些语言(如Perl)中很常见(在其他语言(如PHP)中被滥用).@Daksh-不。你能告诉我们为什么需要它成为数组吗?也许我们可以解决这个问题。@Daksh-javascript中没有稀疏/关联数组。你可以有数组或对象。这是你的选择。你可以想要不同的东西,但它不存在。@Cam我不同意。这个答案从错误的statem开始(另外,它没有解释为什么在中使用
“10”
作为数组属性与使用
10
相同,因此没有什么可以抵消我的nit。)@jfriend00-我认为术语“稀疏”是可以理解的,它被理解为一个数组,其中省略了一些索引,例如
[0,1,,,,,4]