while循环递增数组长度

时间:2014-12-15 11:44:29

标签: javascript while-loop

有人可以帮我理解为什么以下数组长度在没有计数器的情况下递增。

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

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

namesArray.sort();

var namesList = namesArray.join("\n");

console.log(namesList);

因此,我假设,while循环会增加while循环中包含的任何值。我查看了MDN While Loop,我可以看到这个例子中的x也都在递增。

我只是想确定我是否正确但主要理解为什么会这样做。

由于

4 个答案:

答案 0 :(得分:1)

在Javascript中可以通过多种方式将项添加到数组中

您的代码基本上是推送,因此您可以替换

namesArray[namesArray.length] = inputName

namesArray.push(inputName)

答案 1 :(得分:0)

对于空数组,length属性为0。让我们这样说吧

第一次迭代

while ( (inputName = prompt("Enter a name", "")) != "") {
    namesArray[namesArray.length] = inputName;
    // namesArray[0] = inputName;
}

第二次迭代

while ( (inputName = prompt("Enter a name", "")) != "") {
    namesArray[namesArray.length] = inputName;
    // namesArray[1] = inputName; // since now length is 1
}

等等..所以你正在做的是按以下方式分配

names[0] = inputName
names[1] = inputName 
...

因此,length0增加到n,因为您正在向数组中添加元素。

答案 2 :(得分:0)

Javascript数组的length属性是最高的下标加1。因此,如果数组中有8个元素,则它们的索引为0 - 7,长度为8.赋值语句namesArray[namesArray.length] = inputName;向数组添加元素,因此增加了长度。

答案 3 :(得分:0)

   while (condition) {// Condition either return true or false so loop will execute untill condition return false
     namesArray[namesArray.length] = inputName //you just push data into array
    }