查看初学者的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提前!
答案 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", " ")) != " ") {
检查的数组的结束索引