如何在 JavaScript 中创建一个索引从 1 开始的数组?

IT技术 javascript arrays indexing
2021-02-28 01:46:55

默认情况下,每个 JavaScript 数组的索引从 0 开始。我想创建一个索引从 1 开始的数组。

我知道,一定很琐碎……谢谢你的帮助。

6个回答

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

为什么你希望它从 1 开始?任何一个:

  • 从 0 开始并根据需要调整您的指数;或者

  • 从 0 开始,忽略索引 0(即只使用索引 1 及以上)。

@josefdev - 在那里放一个值,然后永远不要引用它。IEa = ["ignore me", "this has index 1", "another string, at index 2"]; firstString = a[1];然而,这个建议不是很有用——内置函数,比如for (s of a)不会“知道”你想忽略a[0]——负担完全在于你找到不使用 a[0] 的编码方法;习惯从 0 开始的数组更实用。
2021-04-15 01:46:55
如何忽略 Javascript 中的索引 0?
2021-05-05 01:46:55
现在,8 年后,您可以使用Map
2021-05-08 01:46:55
不可能......数据令人惊讶!好吧,我没有什么有用的理由说...为什么我想从 1 开始...只是一个想法。所以,是的..我想,我必须相应地调整我的指数,这不是问题。想从 1 开始,只是为了它。
2021-05-09 01:46:55

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

var map = [null, 'January', 'February', 'March'];
'First month : ' + map[1];


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

var map = {1:'January', 2:'February', 3:'March'};
'First month : ' + map[1];

请注意,这些键实际上不是整数,对象键始终是字符串。
此外,我们不能使用点表示法进行访问。MDN - 属性访问器


我会选择第一个解决方案,我认为它不那么令人困惑。

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

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

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

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

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

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

这只是创建了一个第一个值为 1 的数组。这个问题是关于如何创建一个第一个索引为 1 的数组,这是一个非常不同的事情。
2021-04-21 01:46:55

您可以使用delete删除第一个元素,如下所示:

let arr = ['a','b','c'];
delete arr[0];

console.log(arr[0]);
console.log(arr[1]);

或者根本不定义它:

let arr = [,'b','c'];

console.log(arr[0]);
console.log(arr[1]);

如果您想确保始终获得第一个真实元素而不管索引如何并且可以访问 ES6,您可以使用:

arr.find(Boolean)

好的,根据@cletus 的说法,你不能这样做,因为它是一个内置的 javascript 功能,但如果你仍然想要它,你可以采用稍微不同的方式。您可以编写自己的 Array 的索引相关函数(如reduce, map, forEach)以从 1 开始。这不是一项艰巨的任务,但仍然要问自己:我为什么需要它?

Array.prototype.mapWithIndexOne = function(func) {
  const initial = []
  for (let i = 1; i < this.length + 1; i++) {
    initial.push(func(this[i - 1], i))
  }
  return initial
}

const array = ['First', 'Second', 'Third', 'Fourth', 'Fifth']

console.log(array.mapWithIndexOne((element, index) => `${element}-${index}`))
// => ["First-1", "Second-2", "Third-3", "Fourth-4", "Fifth-5"]

代码笔:https ://codepen.io/anon/pen/rvbNZR ? editors = 0012