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

如何在JavaScript中创建索引从1开始的数组?,javascript,arrays,indexing,Javascript,Arrays,Indexing,默认情况下,每个JavaScript数组的索引从0开始。我想创建一个数组,它的索引从1开始 我知道,一定很琐碎。。。谢谢你的帮助。这不是小事。这是不可能的。最好是使用从1开始的数值属性创建对象,但这不是一回事 你到底为什么要从1点开始?要么: 从0开始,根据需要调整索引;或 从0开始,忽略索引0(即仅使用索引1及以上) 一个简单的解决方案是填写第0项: var map = [null, 'January', 'February', 'March']; 'First month : ' + ma

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


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

这不是小事。这是不可能的。最好是使用从1开始的数值属性创建对象,但这不是一回事

你到底为什么要从1点开始?要么:

  • 从0开始,根据需要调整索引;或

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


    • 一个简单的解决方案是填写第0项:

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

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

      var map = {1:'January', 2:'February', 3:'March'};
      'First month : ' + map[1];
      
      注意这些键实际上不是整数,对象键总是字符串。
      此外,我们不能使用点符号进行访问。()



      我会选择第一个解决方案,我认为它不那么容易混淆。

      简单,只需对经典的Javascript
      for
      循环做两个更改

      var数组=['a','b','c'];
      
      对于(var i=1;i,由于这个问题在谷歌搜索中也会弹出,比如“javascript启动数组为1”,我将给出不同的答案:

      阵列可以切片。因此,您可以获得如下所示的阵列切片版本:

      var someArray = [0, 1, 2, 3];
      
      someArray.slice(1);
      [1, 2, 3]
      
      someArray.slice(2, 4);
      [2, 3]
      
      var myArray= oneArray(['My', 'name', 'is', 'Ram']);
      
      alert(myArray[1]); << this line show you:   My
      

      来源:

      首先将此函数添加到javascript代码中:

      var oneArray = function(theArray)
      {
          theArray.splice(0,0,null);
          return theArray
      }
      
      现在像这样使用它:

      var someArray = [0, 1, 2, 3];
      
      someArray.slice(1);
      [1, 2, 3]
      
      someArray.slice(2, 4);
      [2, 3]
      
      var myArray= oneArray(['My', 'name', 'is', 'Ram']);
      
      alert(myArray[1]); << this line show you:   My
      
      var myArray=oneArray(['My','name','is','Ram']);
      
      alert(myArray[1]);好吧,根据@cletus的说法,你不能这么做,因为这是一个内置的javascript功能,但是如果你还想这么做的话,你可以选择稍微不同的方式。你可以编写你自己的数组索引相关函数(比如
      reduce
      map
      forEach
      )这不是一项困难的任务,但还是要问自己:我为什么需要它

      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"]
      
      Array.prototype.mapWithIndexOne=函数(func){
      常量初始值=[]
      for(设i=1;i`${element}-${index}`)
      //=>[“一等一、二等二、三等三、四等四、五等五”]
      

      Codepen:

      我遇到了一种情况,我需要数组从索引1开始。下面是我所做的:

      var products = ['bar', 'baz'];
      
      products = $.makeArray(products); // necessary to unshift a jQuery object
      products.unshift('foo'); // add "foo" to the beginning of the array
      
      $(products).each(function(index) {
          if (index === 0) {
              return true; // we will skip "foo"
          }
      
          // From now on we can use products[index] starting from 1
      
      });
      
      可以使用删除第一个元素,如下所示:

      让arr=['a','b','c'];
      删除arr[0];
      console.log(arr[0]);
      
      console.log(arr[1])
      为什么要这样做?我问,因为当你发现自己试图绕过编程语言最基本的特征之一时,很有可能有更好的方法来实现你的目标。此外,从0开始数组索引是一个特性,而不是一个bug。如果你想向用户显示索引,你可以玩i+1游戏。你真的应该习惯于零索引,因为如果你解决它,你会在一生中遇到很多围栏柱错误。如果你非常想要它,那么你可以创建自己的数据结构。类似于
      singlyLikedList
      ,并修改它的方法。也许OP想要检查索引的值是否存在,而不是让它从1开始,你可以这样做:
      if(i!==false)
      不可能……数据令人惊讶!我没有什么有用的理由说……为什么我想从1开始……只是一个想法。所以,是的……我想,我必须相应地调整我的索引,这不是一个问题。我想从1开始,只是为了它。现在,8年后,你可以在Javascript中使用如何忽略索引0?@josefdev-输入一个值例如,
      a=[“ignore me”,“this has index 1”,“other string,at index 2”];firstString=a[1];
      但是,这个建议不是很有用-内置函数,例如
      for(s of a)
      不会“知道”您想要忽略
      a[0]
      -找到不使用[0]的编码方法完全是你的负担;更实际的做法是习惯从0开始的数组。这对许多数组方法都不起作用。例如,
      array.from(myArray.keys())
      返回
      [0,1,2,3,4]
      而不是
      [1,2,3,4,5]
      @Gothdo,我认为你错了!‌因为这个结果>>
      [0,1,2,3,4]
      对@detj(提问者)没有任何意外的值。他只需要
      ([0,1,2,3,4])[n]
      n>=1
      时,这个数组对他来说总是有正确的结果。这只是创建了一个第一个值为1的数组。这个问题是关于如何创建一个第一个索引为1的数组,这是一件非常不同的事情。