Jquery/javascript 具有数组关联的命名索引数组

Jquery/javascript named index array with array association

我想知道是否可以(并且正确)构造一个与其他数组关联的命名索引数组。

例如,

var signOptionSet = [];
signOptionSet['basic'] = ['Sign Width', 'Sign Height', 'Sign Depth', 'Base Material', 'Finish'];
signOptionSet['advanced'] = ['Area', 'Perimeter', 'Lighting'];

如何在 signOptionSet['basic'] 中访问 'Sign Height' 之类的内容?

您像

一样访问值 'Sign Height'
alert(signOptionSet['basic'][1]) // 'Sign Height'

Fiddle

I want to know if its possible...

是的,尽管您使用它的方式并不需要数组,您只需要一个对象 ({})(见下文)。

...(and correct)...

有些人会争辩说使用数组然后向其添加非索引属性是不正确的。 技术上它没有任何问题,前提是您了解某些东西(例如JSON.stringify)不会看到那些非索引属性。

How would I access something like 'Sign Height' in signOptionSet['basic']?

这是您分配给 signOptionSet['basic'] 的数组的第二个条目,因此索引为 1,因此:

var x = signOptionSet['basic'][1];

var x = signOptionSet.basic[1];

使用一个对象,并使用 属性 名称文字,因为这里不需要字符串,看起来像这样:

var signOptionSet = {
    basic: ['Sign Width', 'Sign Height', 'Sign Depth', 'Base Material', 'Finish'],
    advanced: ['Area', 'Perimeter', 'Lighting']
};

可以使用字符串,但是,如果您愿意:

var signOptionSet = {
    "basic": ['Sign Width', 'Sign Height', 'Sign Depth', 'Base Material', 'Finish'],
    "advanced": ['Area', 'Perimeter', 'Lighting']
};

单引号和双引号在 JavaScript 中都有效(单引号不会出现在 JSON 中,但这不是 JSON,它是 JavaScript) :

var signOptionSet = {
    'basic': ['Sign Width', 'Sign Height', 'Sign Depth', 'Base Material', 'Finish'],
    'advanced': ['Area', 'Perimeter', 'Lighting']
};