如何在JavaScript中创建索引从1开始的数组?
默认情况下,每个JavaScript数组的索引从0开始。我想创建一个数组,它的索引从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
我知道,一定很琐碎。。。谢谢你的帮助。这不是小事。这是不可能的。最好是使用从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的数组,这是一件非常不同的事情。