如何将项目添加到此javascript数组?

时间:2014-12-16 20:04:31

标签: javascript arrays

查看初学者的javascript书籍并尝试了解一个使用用户输入构建列表的小型浏览器程序。输入框显示并输入字符串作为输入,直到他只是添加" "作为输入。然后列表显示在浏览器中。

以下是代码:

var userInput = " ";
var namesArray = new Array();

while ( (userInput = prompt("Enter name", " ")) != " ") {
    namesArray[namesArray.length] = userInput;
}

namesArray.sort();

var namesList = namesArray.join("<br />");

var listHolder = document.createElement('div');
var list = listHolder.innerHTML = namesList;
document.body.appendChild(listHolder);

我只是不了解作者向数组中添加项目的方式。有人会关心如何解释namesArray [namesArray.length] = userInput如何构建数组?

此外,这是尝试它的小提琴

Thansk提前!

6 个答案:

答案 0 :(得分:0)

基本上.length是数组的大小,所以.length是数组的下一个索引,但还没有任何内容。他只是将字符串添加到数组.length的末尾,它在数组的末尾创建一个新位置。 .length - 1是数组的最后一个元素,因此.length将在数组末尾创建一个新位置。下一次循环时,长度将比前一次大一,因为你在数组中添加了一个元素。

答案 1 :(得分:0)

所以会发生的是,我们得到一个while循环,它会一直询问一个名字,直到我们得到一个空响应:

while ( (userInput = prompt("Enter name", " ")) != " ")

然后使用inital namesArray的长度来索引新值。

namesArray[namesArray.length] = userInput;

所以我们知道数组最初是空的。所以在第一次运行时,长度将为零!我们也知道索引0是数组中的第一项。所以它将它作为第一项添加到数组中。之后,数组现在的长度为1(因为我们刚添加了一个项目)。因此,在下一次迭代中,我们将新项添加到索引为1的数组中,这会将其长度增加到2.这将继续执行,直到我们中断while循环。

因此,如果我们将其分解,我们会更清楚地看到它:

//First iteration

newArray.length = 0;
newArray[newArray.length] = newArray[0]

//Second iteration

newArray.length = 1;
newArray[newArray.length] = newArray[0]

etc.

答案 2 :(得分:0)

只要每次输入一个名称,while循环(userInput = prompt("Enter name", " ")) != " ")的条件将保持为真。

每次输入名称时,都会为长度索引指定名称。每次分配名称时,长度都会增加。因此,对于输入的每个名称,数组都会增长。

答案 3 :(得分:0)

通常,您可以通过.push()方法轻松地将元素添加到数组中。例如:

var ary = []; // empty array
ary.push('foo'); // the ary array now has one element, 'foo'

现在数组索引从零开始,这意味着您将第一个元素称为[0],第二个元素称为[1],等等。但是,.length属性将返回实际的元素数量数组。因此,如果我们向数组中添加10个元素,那么询问长度将给我们10

那么编写该代码的人正在做的事情是使用.length属性允许您定位尚不存在的数组元素的事实 - 元素之后最后一个元素。

例如,假设我们有一个包含10个元素的数组。 length属性为10,但最后一项的索引为9,因为索引从零开始。当该代码的作者确实:

namesArray[namesArray.length] = userInput;

他们也说namesArray[10] = userInput;,并将userInput分配给数组中的第11个位置(请记住,零索引)。

由于这可能会让人感到困惑,因此大多数程序员只需使用.push()方法,该方法会自动将您传递给数组的值添加到数组的末尾,而无需指定索引。

答案 4 :(得分:0)

由于数组从零开始索引,因此数组中的最后一个元素始终具有索引

  

namesArray.length - 1

因此,下一个可用的未使用索引始终等于

  

namesArray.length

您可以安全地在此索引处设置值,并知道它们将添加到数组的末尾。

答案 5 :(得分:0)

所以,你有这个数组:

var namesArray = new Array();

您可能知道可以插入如下数组值:

namesAray[0] = 'first value';
namesAray[1] = 'second value';
namesAray[2] = 'third value';

现在,代码是这样的:

namesArray[namesArray.length] = userInput;

所以,这里namesArray.length为您带来了数组的大小。好的,如上所示,我看到我已向namesArray namesArray[0],namesArray[1], namesArray[2]添加了三个值。因此,数组的当前大小为3,namesArray[namesArray.length]等于namesArray[3],现在插入输入值。

所以,像这样,代码将新数组值插入到由while ( (userInput = prompt("Enter name", " ")) != " ") {检查的数组的结束索引

希望你理解。