试图理解JS数组

时间:2016-09-22 21:52:45

标签: javascript arrays

function btnDisplay_onclick() {
  var age = ageTextboc.value;
  var minWeight = [5, 15,25, 45, 60, 70, 75, 80];

  minWeightTextbox.value = minWeight[age-1];
}

我想知道为什么我需要在age-1中使用minWeightTextbox.value = minWeight[age-1];部分,而不仅仅是age

如果有人可以帮助解释这确实是什么,那将是惊人的。

2 个答案:

答案 0 :(得分:2)

从技术上讲,你不必做age-1,你可以做age ......问题是你必须进入年龄从0开始而不是1.(假设你的数组准确为0意味着不到一个月。)

正如其他答案和评论中所解释的那样,原因是因为数组在javascript中从0开始(除了一些奇怪的地方以外的大多数地方都是如此)。

或者,您可以为数组中的0位置添加填充值。在这里我添加了1.现在您不必使用age-1,您可以使用age

var minWeight = [1, 5, 15, 25, 45, 60, 70, 75, 80];

这是另一种以相同方式修改数组的替代方法;

var minWeight = [, 5, 15, 25, 45, 60, 70, 75, 80];

只有这一次,占据索引0的第一个位置是未定义的。

Here's some history to read up on.

数组索引是基数而不是序数。第一个(序数)位置是索引0(基数)。对象也可以有数字成员,但它们是名义上的。

Here's a clear explanation.订购的序号(第一),计数的基数(0,1,2 ......),命名的名义(#3)。

答案 1 :(得分:0)

这是因为数组是0索引的,并且该代码想要在视觉上表示以月为单位的年龄(1-9)。因此,如果我选择年龄“1”,则将数据存储在索引0处。

所以minWeight [0]代表“年龄”0的重量。