Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 数组中的第一个元素_Javascript_Arrays - Fatal编程技术网

Javascript 数组中的第一个元素

Javascript 数组中的第一个元素,javascript,arrays,Javascript,Arrays,为什么数组中的索引总是以0开头?它和二进制有关吗?例如: var myArray = [5,6,7,8]; 要访问数字5,您必须说 myArray[0] 但是为什么呢 不,我没有真正的问题。你可以很明显地看出,我对这种东西是新手。这是基本的计算机科学知识,它可以追溯到内存非常有限的那一天,一切都是从0开始的,而不是从1开始的,因为如果你从0开始,你可以在一个数字里数到10个总数 相信我,你显然是个新手,从现在起,你将数到0,1,2,3 我肯定这个问题已经被问过一百次了,但我要咬一口 看待“索

为什么数组中的索引总是以0开头?它和二进制有关吗?例如:

var myArray = [5,6,7,8];
要访问数字5,您必须说

myArray[0]
但是为什么呢


不,我没有真正的问题。你可以很明显地看出,我对这种东西是新手。

这是基本的计算机科学知识,它可以追溯到内存非常有限的那一天,一切都是从0开始的,而不是从1开始的,因为如果你从0开始,你可以在一个数字里数到10个总数


相信我,你显然是个新手,从现在起,你将数到0,1,2,3

我肯定这个问题已经被问过一百次了,但我要咬一口

看待“索引”或“键”的一种方式是将其视为“偏移”

myArray
基本上充当指向一系列项中第一项的指针。具体来说,它指向内存中的数字“5”。因此,当你说
myArray[1]
时,就像说“第一个元素在
myArray
中的位置加上1项”,因此你会跳过第一个元素

#include <stdio.h>

int main(void) {
    int myArray[] = {5,6,7,8};
    printf("%d",*myArray); // prints "5", equivalent to myArray[0]
    printf("%d",*(myArray+1)); // prints "6", equivalent to myArray[1]
    return 0;
}
在C语言中,当您编写
*myArray
(指针解引用)时,它实际上会返回第一个元素

#include <stdio.h>

int main(void) {
    int myArray[] = {5,6,7,8};
    printf("%d",*myArray); // prints "5", equivalent to myArray[0]
    printf("%d",*(myArray+1)); // prints "6", equivalent to myArray[1]
    return 0;
}
#包括
内部主(空){
int myArray[]={5,6,7,8};
printf(“%d”,*myArray);//打印“5”,相当于myArray[0]
printf(“%d”,*(myArray+1));//打印“6”,相当于myArray[1]
返回0;
}

除了“计算机就是这样工作的”之外,还有其他原因。

关于历史原因的好博客:

维基百科给了我们这样的解释:

索引来源

有些语言(如C)只提供基于零的数组类型 任何索引的最小有效值为0。这个选择是正确的 便于阵列实现和地址计算。用一个 语言,指向任何数组内部的指针都可以 定义的,将象征性地作为一个伪数组来容纳 负指数。这仅仅是因为C不检查索引 使用时违反边界。其他语言只提供一个基于数组的数组 类型,其中每个索引从1开始;这是传统的 矩阵和数学序列的数学惯例。A. 很少有语言(如Pascal)支持基于n的数组类型,其 最低法定索引由程序员选择。亲属 每种选择的优点都是激烈争论的主题。 零基索引与一基索引相比,在避免一次过或一次过错误方面有着天然的优势。见比较 各种应用程序使用的基本索引的编程语言(数组) 语言


与许多其他语言一样,Javascript中的数组总是从索引0开始,但并非所有语言都是这样

例如,在Pascal中,定义上下边界,以便可以在索引3处启动数组:

var myArray: Integer[3..6];
最常见的是从零开始数组,因为当您访问这些项时,这是最有效的。如果从任何其他索引开始,则在计算存储项的地址时,必须减去该值。这种额外的计算在今天不会成为一个问题,但在像C这样的语言被构造出来的时候,它确实是一个问题


(Javascript中的数组实际上与大多数其他语言完全不同,但它使用零基索引,因为灵感来源于大多数类似语言。)

欢迎来到计算机科学领域。你有实际问题需要解决吗,还是仅仅出于教育原因?通过维基链接:“瑞士联邦铁路从零开始对某些类别的机车车辆进行编号”。我想这是一个很好的理由;)那个维基百科页面太棒了!我建议,在许多其他可能的阅读。