如何在索引从1开始的javascript中创建数组

det*_*etj 19 javascript arrays indexing

默认情况下,每个javascript数组的索引从0开始.我想创建一个索引从1开始的数组.我知道,必须非常简单... thnx for ur help

cle*_*tus 20

这不是微不足道的.不可能.您可以做的最好的事情是使用从1开始的数字属性创建一个对象,但这不是一回事.

你为什么要从1开始呢?或者:

  • 从0开始并根据需要调整索引; 要么

  • 从0开始,只是忽略索引0(即只使用索引1和向上).

  • 现在,八年后,您可以使用[地图](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Map) (2认同)

Mau*_*ger 7

由于这个问题也出现在Google搜索中,例如"javascript start array at 1",我会给出不同的答案:

数组可以切片.所以你可以像这样得到一个切片版本的数组:

var someArray = [0, 1, 2, 3];

someArray.slice(1);
[1, 2, 3]

someArray.slice(2, 4);
[2, 3]
Run Code Online (Sandbox Code Playgroud)

资料来源:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/slice

  • 这只是创建一个第一个值为 1 的数组。这个问题是关于如何创建一个第一个索引为 1 的数组,这是一个非常不同的事情。 (5认同)

Gra*_*ble 6

一个简单的解决方案是填充第零项:

var map = [null, 'January', 'February', 'March'];
'First month : ' + map[1];
Run Code Online (Sandbox Code Playgroud)


从语义上讲,使用对象会更好:

var map = {1:'January', 2:'February', 3:'March'};
'First month : ' + map[1];
Run Code Online (Sandbox Code Playgroud)

请注意,这些键实际上不是整数,对象键始终是字符串。
另外,我们不能使用点符号来访问。(MDN-属性访问器


我会选择第一种解决方案,我认为这种解决方案不太容易混淆。