javascript数组可以同时是数字数组和关联数组吗?

javascript数组可以同时是数字数组和关联数组吗?,javascript,Javascript,可能重复: 我从一个函数返回一个数组,我想知道我是否可以同时拥有字符串关联和数字关联 例: 在某种程度上是的,因为它是某种类型的对象。但使用它们是错误的:) 使用对象({})作为命名(stringish)索引,使用数组([])作为数字索引。数组只是具有特殊长度属性和一些方便的内置方法的对象。因为数组是对象,所以它们的属性名是字符串,但是数字的('0'、'1'、'2'等)是由数组方法访问的,而非数字的(例如长度)不是。此外,许多数组方法是通用的,可以应用于具有适当属性(即数字长度属性和一些数字属

可能重复:

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

例:


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

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

请注意,要将属性名称视为索引,属性名称必须满足so:


通常认为,在普通对象可以使用的情况下使用数组是一种不好的形式,但这样做不会产生任何后果,除非弄乱了长度属性。

学习的最佳方法是尝试,所以尝试一下。你是对的。我应该删除这个问题吗?我只是快速地将它插入我的JavaScript控制台。
what
的条目似乎不起作用。@wecsam,@wecsam:如果您通过其属性名:
array访问它,它就会起作用。what
。它将被数组方法忽略。这有一些用途。有时您只想在数组对象上携带一些附加数据。当然,在某些特殊用途中,您可以将它们混合使用,但这可能会混淆脚本的其他用户。
array[0] = green;
array[1] = blue;
array['what'] = colors;
var x = [];
x['00'] = '00';  // length = zero as '00' is not an index
x['0']  = '0';   // length = 1 as '0' is an index